【发布时间】:2025-12-27 15:05:06
【问题描述】:
我有一个存储过程,它返回带有文本的单行和一列,我需要将此文本设置为一个变量,例如:
declare @bla varchar(100)
select @bla = sp_Name 9999, 99989999, 'A', 'S', null
当然,这段代码不起作用...
谢谢!
【问题讨论】:
标签: sql-server stored-procedures
我有一个存储过程,它返回带有文本的单行和一列,我需要将此文本设置为一个变量,例如:
declare @bla varchar(100)
select @bla = sp_Name 9999, 99989999, 'A', 'S', null
当然,这段代码不起作用...
谢谢!
【问题讨论】:
标签: sql-server stored-procedures
如果您无法更改存储过程,另一种解决方案是定义一个临时表,并将结果插入其中
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" help 中的更多信息(帮助来自 MSSQL 2008,但这也适用于 2000)
【讨论】: