[英]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.