无论出于何种原因,我似乎无法从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
当我在另一个窗口中运行@SQL
查询时,它会显示一个包含一个值的列。
但是,不幸的是,当我尝试这个时,@ FieldValue总是返回NULL。
在他们教sp_executesql的那天,我有没有想念?明显!但是什么?
答案 0 :(得分:1)
参见此示例
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
答案 1 :(得分:0)
sp_executesql
返回(生成)结果集。 @FieldValue
在上面的代码中毫无意义 - sp_executesql
不会将任何值放入该变量中。