sql - 使用动态 sql 在存储过程中填充临时变量

标签 sql sql-server sql-server-2008 stored-procedures

我有一个存储过程,我在其中声明了一个需要使用动态 sql 填充的 int 变量

CREATE PROCEDURE USP_aTABLE_ADD
/*

    stored procedure variables

*/
AS

     DECLARE @count int
     SET @count = 1
     DECLARE @qry nvarchar(max)

/*
     SET UP @qry which will look like this
     SELECT @count = count(*) FROM aTABLE WHERE (col1 = 'val1' AND col2 = 'val2'...)
*/


/*
     How to get the value of @count so that I can continue with add process
*/

IF @count = 0
BEGIN
   /*add logic*/
END

最佳答案

使用 sp_executeSQL 和一个输出参数:

DECLARE @count INT = 1
DECLARE @qry   NVARCHAR(MAX)

SET @qry = N'set @count = (....)'

EXEC sp_executesql @qry, N'@count INT OUTPUT', @count OUTPUT
    
SELECT @count

关于sql - 使用动态 sql 在存储过程中填充临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067943/

相关文章:

SQL 重命名列字段

sql-server-2008 - 您是否曾让 SQL Server 2008 返回与 SQL Server 2000 不同的结果集?

SQL UDF 适用于字符串,不适用于列

MySQL DELETE 与 SELECT(?)

MySql 查询以获取在每个国家/地区为每个目的花费的天数? (获取第一个表中存在的第二个表中的所有记录的计数)

sql-server - FSharp.Data.SqlProvider 很慢

visual-studio - Windows 7 家庭高级版上的 Visual Studio 2008/2010 和 SQL Server 2008

java - 错误: ORA-00900 Invalid SQLStatement but statement still works as intended

php - 显示查询中的 5 行数据

sql - Raiserror 中的断线