簡體   English   中英

如何在 T-SQL 中動態查詢值?

[英]How do I query a value dynamically in T-SQL?

無論出於何種原因,我似乎無法從 SQL 中動態獲取值。

declare @SQL nvarchar(max)
declare @FieldName nvarchar(255)
declare @FieldValue nvarchar(max)

select @SQL = 'SELECT TOP 1 ' + @fieldname 
       +' FROM MyTable WHERE CM_CASE_YEAR = ' + LEFT(@ClaimNumber, 2) 
       +' AND CM_CASE_NUMBER = ' + RIGHT(@ClaimNumber, 6)
exec sp_executesql @sql, @FieldValue OUTPUT
select @FieldName + ' - ' + @FieldValue

當我在另一個 window 中運行@SQL查詢時,它顯示一列具有一個值。

但是,不幸的是,當我嘗試這個時,@FieldValue 總是返回 NULL。

他們教 sp_executesql 的那天我錯過了什么嗎? 明顯地? 但是什么?

看這個例子

DECLARE @SQL NVARCHAR(MAX)
DECLARE @FieldName sysname = 'name'
DECLARE @FieldValue NVARCHAR(MAX)

SELECT @SQL = 'SELECT TOP 1 
                    @FieldValue =' + QUOTENAME(@FieldName) + ' FROM sys.objects'

EXEC sp_executesql @SQL, 
                   N'@FieldValue nvarchar(max) OUTPUT',
                   @FieldValue =@FieldValue OUTPUT

SELECT @FieldName + ' - ' + @FieldValue

sp_executesql返回(生成)一個結果集。 @FieldValue在上面的代碼中毫無意義—— sp_executesql不會將任何值放入該變量中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM