2012-03-23 5 views
2

パラメータの値に基づいて異なるSELECTステートメントを返す関数が必要です。私は以下のように記述しましたが、SQL Server関数は、パラメータに基づいて異なるSELECTステートメントを返します

この コンテキストでは、戻り値付きのRETURN文は使用できません。あなたのコメントパー

ALTER FUNCTION [dbo].[Sample] (@SampleValue int) 
RETURNS TABLE 
AS 
BEGIN 
IF @SampleValue=100 
RETURN(
SELECT .... 
) 
ELSE 
RETURN(
SELECT .... 

) 
+1

selectから値を返さないのはなぜですか?また、クエリを表す文字列を返すこともできます。 –

+0

2つのselect文が同じ "shape"の結果セットを生成しますか? (列数、各列、同じ名前と種類) –

+0

はい、同じです。差異の1つにフィルタリングのWHERE文があります。 – facot

答えて

3

- ちょうど単一のクエリとしてそれを書く - 二度それを書く必要はありません。

ALTER FUNCTION [dbo].[Sample] (@SampleValue int) 
RETURNS TABLE 
AS 
BEGIN 
RETURN(
SELECT .... WHERE @SampleValue = 100 OR (<rest of where clause from other branch>) 
) 
+0

答えがありがとうございました。それは私の問題に対する踏み台の解決ですが、私はこれをどう考えていないのでしょうか?) – facot