我正在尝试在另一个存储过程中执行一个存储过程。问题是存储过程名称是在第一个过程中动态构建的。这是我正在尝试做的一个例子......
CREATE PROCEDURE SPINSVALUE_12345
@guid uniqueidentifier
AS
DECLARE @returnValue bit
DECLARE @spToExec NVARCHAR(255)
SET @returnValue = 0
WHILE (@returnValue=0)
BEGIN
SET @spToExec = 'SPINSVALUE_' + REPLACE(@guid, '-', '_')
... DO OTHER STUFF ...
EXEC sp_executeSQL @spToExec, N'@returnValue BIT OUTPUT', @returnValue OUTPUT
END
END
我似乎无法让 sp_executeSQL 工作。是否可以通过这种方式执行存储过程并从 OUTPUT 参数中获取值?
最佳答案
该过程有返回值或输出值吗? 这是一个例子
create proc prBlatest
as
return 5
go
DECLARE @chvTableName VARCHAR(100),
@intTableCount INT,
@chvSQL NVARCHAR(100)
SELECT @chvTableName = 'prBlatest'
SELECT @chvSQL = N'exec @intTableCount = ' + @chvTableName
EXEC sp_executesql @chvSQL, N'@intTableCount INT OUTPUT', @intTableCount OUTPUT
SELECT @intTableCount
GO
顺便说一句,我认为让许多进程做类似的事情是一个坏主意,也许你需要重构
关于sql-server - 通过 sp_executesql 执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462312/