SQL使用返回值
问题描述:
让我们来定义:SQL使用返回值
create table cities
(
ID int identity,
name varchar(50) unique
)
create function getID (@name varchar(50)) returns int
begin
declare @id int
select @id=ID from cities where [email protected]
return @id
end
create procedure addLine
@cityID int
as begin
...
end
是否有可能执行与函数返回值的过程,如下所示?
exec addLine getID('Warsaw')
exec addLine dbo.getID('Warsaw')
exec addLine (select dbo.getID('Warsaw'))
我上面试过,它没有帮助。
答
微软说这是不可能的。你可以不通过结果的函数来程序作为一个参数:
[ { EXEC | EXECUTE } ]
{
...
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
...
}
[;]
所以,唯一不变的值,变量,DEFAULT
关键字是允许的。这样做的 2可能的方式是:
1:声明变量
declare @i int = dbo.getID('Warsaw')
exec addLine @i
2:使用动态查询
DECLARE @cmd NVARCHAR(MAX) = 'exec addLine ' + CAST(dbo.getID('Warsaw') AS NVARCHAR(MAX))
EXEC(@cmd)
答
这将 “与值执行一个过程由函数返回”
它只是不会'内联'
declare @id int
select @id = dbo.getID('Warsaw')
exec addLine @id
它不起作用?你使用了一个逐步调试器吗? – Dai 2015-02-07 22:00:44
老实说,我从来没有使用它,所以我不知道该怎么做,我会尝试找到该选项 – user3162968 2015-02-07 22:04:04