我试图获取表中具有特定值的行数,如果count为0,则在表中添加一个值。此计数是存储过程中的局部变量。动态构建select语句并使用它来填充存储过程变量
我正在动态构建SQL并将SQL语句存储到nvarchar
变量中。
然后,使用EXEC
我正在运行此SQL,如下所示,希望填充计数变量。
但它不工作。
DECLARE @qry NVARCHAR(max)
DECLARE @count INT
-- building @qry will result as follows
@qry = SELECT @count = COUNT(*) FROM aTable WHERE (col1 = @col1 AND ...)
@count = EXEC @qry
IF @count = 0
BEGIN
-- carry on with adding
END
以何种方式是不工作?你有错误吗?你是否得到了与预期不同的结果? –
这应该有助于我相信:http://stackoverflow.com/questions/6968512/assign-result-of-dynamic-sql-to-variable – Marc
尝试使用'@ count'作为'OUT'参数,[this ](http://stackoverflow.com/questions/1589466/execute-stored-procedure-with-an-output-parameter)可能会有所帮助。在'@count = EXEC @ qry'上的 – user2989408