2012-03-23 68 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返回值?或者,您可以返回代表查询的字符串。 – 2012-03-23 14:22:08

+0

两个select语句是否生成具有相同“形状”的结果集? (列数,每列,相同的名称和类型) – 2012-03-23 14:29:27

+0

是的,它们是相同的。唯一的区别是其中一个具有用于过滤的WHERE语句。 – facot 2012-03-23 14:32:25

回答

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 2012-03-23 15:22:01

相关问题