将动态 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)