这是我的情景。我有一个具有选择查询的存储过程。
Select M ,X , Y, dbo.function(parameters) as Z
from SomeTable
where condition1
and condition2
and Z > SomeValue
where子句中的Z是函数的计算值。
dbo.function始终返回单个值。
我不想在where子句中使用该函数。我想将值设置为变量并在where子句中使用该变量。
应该怎么做?请帮助。
答案 0 :(得分:1)
您必须执行类似
的操作DECLARE @Z TYPE_GOES_HERE = dbo.function(parameters)
Select M ,X , Y, @Z as Z
from SomeTable
where condition1
and condition2
and @Z > SomeValue
仅当传递给函数的参数不是表中的列时,这才有效。如果它是依赖的,你可以使用CTE。像
这样的东西;WITH Vals AS (
Select M ,X , Y, dbo.function(parameters) as Z
from SomeTable
)
SELECT *
FROm Vals
where condition1
and condition2
and Z > SomeValue
答案 1 :(得分:0)
DECLARE @MyVar INT
SELECT @MyVar = dbo.function(parameters)
SELECT somethings
FROM tables
WHERE field = @MyVar
答案 2 :(得分:0)
根据您的要求,您可以使用select inside select,steady =)
SELECT * FROM (
Select M ,X , Y, dbo.function(parameters) as Z
from SomeTable
where condition1
and condition2
) T1
WHERE Z > SomeValue