Microsoft t sql如何在用户定义函数中声明临时变量?

The*_*mer 2 sql t-sql sql-server-2014

那么如何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
    )
)
Run Code Online (Sandbox Code Playgroud)

服务器抱怨变量声明在错误的位置。我应该在哪里像这样在 UDF 中声明我的变量?

lba*_*ira 5

您正在创建一个内联表值函数,此类函数必须仅包含单个SELECT语句。

如果要使用变量,则必须创建多语句表值函数。您的函数将声明为:

create function someFunction(@someParam varchar(100))
returns @table (field1 type, field2 type, ...)
as 
begin
    declare @tempvar varchar(100)
    set @tempvar = ''--Set the var to something useful
    insert @table
    select * from sometable where somecolumn = (
        select top 1 someColumn
        from sometable
        where somecolumn = @tempvar
    )
    return
end
Run Code Online (Sandbox Code Playgroud)