如何在T-SQL中动态查询值?

如何在T-SQL中动态查询值?,sql,tsql,dynamic,sp-executesql,Sql,Tsql,Dynamic,Sp Executesql,无论出于何种原因,我似乎无法从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 C

无论出于何种原因,我似乎无法从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总是返回空值


他们教sp_executesql那天我错过了什么吗?明显地但是什么呢?

sp_executesql
返回(生成)一个结果集
@FieldValue
在上面的代码中没有意义-
sp_executesql
不会将任何值放入该变量。

sp_executesql
返回(生成)结果集
@FieldValue
在上面的代码中没有意义-
sp\u 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
看这个例子

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

好的,介意告诉我如何在那个变量中得到一个值吗?Jason,我只是为了这个目的启动了MSSQL,但是Martin在我能回答之前就已经回答了!好的,介意告诉我如何在那个变量中得到一个值吗?Jason,我只是为了这个目的启动了MSSQL,但是Martin在我能回答之前就已经回答了!