sql-server - 通过 sp_executesql 执行存储过程

标签 sql-server stored-procedures

我正在尝试在另一个存储过程中执行一个存储过程。问题是存储过程名称是在第一个过程中动态构建的。这是我正在尝试做的一个例子......

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/

相关文章:

java - 是否可以将 null 参数传递给 Java JPA 2.1 中的存储过程?

mysql - 如何发现MySQL存储过程的问题?

mysql - 如何使用 MySQL 中的 SELECT 语句从一个表中获取数据,并从另一个表中覆盖它?

SQL:查询同一个表中的一列

python - 如何从 Python 中的存储过程获取输出参数?

c# - ASP .NET C# SQL 在 ExecuteScalar 上返回 DBNULL

mysql - 如何在 MySQL 5.5 中获取存储过程的异常消息

sql - 根据变量类型在 SQL 中进行条件分支

sql - 如何将数据库列(及其数据)提取到新表中?

java - Spring的存储过程,解析结果Map