将动态 SQL 的字符串值获取到 SQL 服务器中的 Select 查询
Getting String value of Dynamic SQL into Select query in SQL Server
我需要从动态 SQL 获得 return 值。我使用 sp_executesql 作为字符串执行 select 查询。我必须取得成果。这是 sql 查询:
DECLARE @dynsql nvarchar(max)
SET @dynsql = 'select @InvoiceNo=InvoiceNo from '+ QUOTENAME(@DynDB) +'.[dbo].[TableName] where UserID = '+
cast(@UserID as nvarchar)
EXEC sp_executesql @dynsql
问题:这个 @dynsql 是字符串值,我必须在这个 sql 查询中达到一个值。
最佳解决方案是:
我们可以添加我们的输出参数来查询,然后我们应该将它添加到执行行,如下所示:
DECLARE @dynsql nvarchar(max)
SET @dynsql = 'select @InvoiceNo=InvoiceNo from '+ QUOTENAME(@DynDB) +'.[dbo].[TableName] where UserID = '+
cast(@UserID as nvarchar)
EXEC sp_executesql @dynsql, N'@InvoiceNo int OUTPUT',@InvoiceNo = @InvoiceNo OUTPUT
select @InvoiceNo as InvoiceNo
结果是:InvoiceNo = 11111 (int value)
我需要从动态 SQL 获得 return 值。我使用 sp_executesql 作为字符串执行 select 查询。我必须取得成果。这是 sql 查询:
DECLARE @dynsql nvarchar(max)
SET @dynsql = 'select @InvoiceNo=InvoiceNo from '+ QUOTENAME(@DynDB) +'.[dbo].[TableName] where UserID = '+
cast(@UserID as nvarchar)
EXEC sp_executesql @dynsql
问题:这个 @dynsql 是字符串值,我必须在这个 sql 查询中达到一个值。
最佳解决方案是:
我们可以添加我们的输出参数来查询,然后我们应该将它添加到执行行,如下所示:
DECLARE @dynsql nvarchar(max)
SET @dynsql = 'select @InvoiceNo=InvoiceNo from '+ QUOTENAME(@DynDB) +'.[dbo].[TableName] where UserID = '+
cast(@UserID as nvarchar)
EXEC sp_executesql @dynsql, N'@InvoiceNo int OUTPUT',@InvoiceNo = @InvoiceNo OUTPUT
select @InvoiceNo as InvoiceNo
结果是:InvoiceNo = 11111 (int value)