从 SQL Server 存储过程中的动态 SQL 检索结果
在存储过程中使用动态 SQL 通常需要捕获查询的结果。 这可能很棘手,但这里有一个解决方案,可以有效地将动态查询结果检索到存储过程变量中。
假设您需要动态执行如下查询:
<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000) DECLARE @city VARCHAR(75) SET @city = 'London' SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city VARCHAR(75)', @city = @city</code>
直接执行不会将结果存储在变量中。 要捕获输出,请修改代码如下:
<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000) DECLARE @count INT DECLARE @city VARCHAR(75) SET @city = 'New York' SET @sqlCommand = 'SELECT @cnt = COUNT(*) FROM customers WHERE City = @city' EXECUTE sp_executesql @sqlCommand, N'@city VARCHAR(75), @cnt INT OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
这种改进的方法使用了以下关键元素:
@cnt
变量: 动态 SQL 将 COUNT(*)
结果分配给局部变量 @cnt
.OUTPUT
关键字: OUTPUT
关键字将 @cnt
指定为输出参数。sp_executesql
参数: sp_executesql
现在接收 @city
输入参数和 @cnt
输出参数。SELECT @count
显示捕获的结果。 该变量现在保存动态查询返回的计数。此方法提供了一种强大的方法来处理存储过程中动态 SQL 的结果,确保准确高效的数据检索。
以上是如何将动态 SQL 查询结果捕获到 SQL Server 中的存储过程变量中?的详细内容。更多信息请关注PHP中文网其他相关文章!