【发布时间】:2012-04-08 02:36:20
【问题描述】:
我需要一个根据参数值返回不同选择语句的函数。我像下面这样写,但它会抛出一个错误,如
不能在此使用带有返回值的 RETURN 语句 上下文。
ALTER FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS TABLE
AS
BEGIN
IF @SampleValue=100
RETURN(
SELECT ....
)
ELSE
RETURN(
SELECT ....
)
【问题讨论】:
-
为什么不从选择中返回值?或者,您可以返回一个表示查询的字符串。
-
两个 select 语句是否生成具有相同“形状”的结果集? (列数,对于每列,相同的名称和类型)
-
是的,它们是一样的。唯一的区别是其中一个有一个用于过滤的 WHERE 语句。
-
我在这里的目的是如果参数带有特定值我需要返回一个没有 WHERE 语句的 select 语句,如果参数的值与这个特定值不同,我需要过滤 select 语句用这个参数。
-
@user1288423 - 如果您想根据参数执行不同的过滤器,您可以简单地解释逻辑并在一个查询中完成。如果做两个查询没问题,那么你可以在下面看到我的答案。
标签: sql sql-server-2008 function