我有一个sproc返回一行和一个文本列,我需要将此文本设置为一个变量,如:
declare @bla varchar(100) select @bla = sp_Name 9999, 99989999, 'A', 'S', null
但当然,这段代码不起作用......
谢谢!
如果您无法更改存储过程,则另一种解决方案是定义临时表,并将结果插入其中
DECLARE @Output VARCHAR(100) CREATE TABLE #tmpTable ( OutputValue VARCHAR(100) ) INSERT INTO #tmpTable (OutputValue) EXEC dbo.sp_name 9999, 99989999, 'A', 'S', null SELECT @Output = OutputValue FROM #tmpTable DROP TABLE #tmpTable
如果存储过程返回单个值,您可以将存储过程中的一个参数定义为OUTPUT变量,然后存储过程将设置参数的值
CREATE PROCEDURE dbo.sp_Name @In INT, @Out VARCHAR(100) OUTPUT AS BEGIN SELECT @Out = 'Test' END GO
然后,您将获得如下输出值
DECLARE @OUT VARCHAR(100) EXEC sp_name 1, @Out OUTPUT PRINT @Out
DECLARE @out INT EXEC @out = sp_name 'param', 2, ...
T-SQL"EXECUTE" 帮助中的更多信息(帮助来自MSSQL 2008,但这也适用于2000)