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

use*_*838 2 sql sql-server stored-procedures sql-server-2008

我有一个存储过程,我在其中声明了一个需要使用动态 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
Run Code Online (Sandbox Code Playgroud)

Ale*_* K. 5

使用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
Run Code Online (Sandbox Code Playgroud)