【发布时间】:2019-10-15 00:13:02
【问题描述】:
那么如何在用户声明的函数中声明一个临时局部变量,声明如下:declare @tempVar varchar(max)?
我在这里试图解决的实际问题是在用户定义的存储函数中声明和使用变量。我这样声明我的函数:
create function someFunction(@someParam varchar(100))
returns table
as
return (
declare @tempvar varchar(100)
set @tempvar = ''--Set the var to something useful
select * from sometable where somecolumn = (
select top 1 someColumn
from sometable
where somecolumn = @tempvar
)
)
服务器抱怨变量被声明在错误的位置。我应该在哪里像这样在 UDF 中声明我的变量?
【问题讨论】:
-
你不能。子查询被优化为它们所属的整个查询的一部分。它们没有作为单独的步骤处理,因此没有意义。如果您能解释您拥有哪些数据以及您要解决什么问题,我们或许可以提供帮助。
-
@Damien_The_Unbeliever 查看编辑。
-
在 UDF 中声明一个变量是微不足道的 - 你写
declare @var type就完成了。但是您最初要求在 子查询 中执行此操作。这就是需要更多解释您要实现的目标的地方。也许如果您提供了一些示例数据并解释了 UDF 的计算用途,我们可以为您提供帮助。 -
@Damien_The_Unbeliever 再次编辑。
标签: sql tsql sql-server-2014