1

何らかの理由で、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別のウィンドウでクエリを実行すると、1つの値を持つ1つの列が表示されます。

しかし、残念ながら、これを試してみると、@FieldValueは常にNULLに戻ります。

彼らがsp_executesqlを教えた日に何かを逃しましたか?明らかに!しかし、何ですか?

4

2 に答える 2

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
于 2011-05-03T22:40:31.967 に答える
0

sp_executesql結果セットを返します(生成します)。 @FieldValue上記のコードでは意味がありません-sp_executesqlその変数に値を入れません。

于 2011-05-03T22:37:52.917 に答える