0

ストアド プロシージャの戻り値を保存する必要があるプロジェクトがあります。

declare @query_bereich nvarchar(500)

SET @query_bereich = 'select bereich' + convert(varchar(2), @bereich) +
                     ' from ImpArtGruppe where Artikelnummer = ' + @artnum 

set @artgrp = (EXEC sp_executesql @query_bereich)
select @artgrp = ISNULL(@artgrp, '')
select @artgrp

今私が抱えている問題は、戻り値が常に 0 であることです。別のシナリオでは、複数の値を持つことができるレストゥルセットになるため、これはデフォルトであると思います。しかし、私の場合、クエリが常に1つだけを返すようにしました。

また、Googleで見つけたコードをフォローしようとしました:

EXEC @artgrp = sp_executesql @query_bereich

しかし、これもうまくいきませんでした。

誰でもこれで私を助けることができますか?

4

2 に答える 2

2

サンプル コードにはストアド プロシージャはありません。動的な T-SQL クエリを作成しているようで、その結果を保存したいと考えています。

を使用し、 のタイプが であるsp_executesqlと仮定する1 つの方法を次に示します。@artgrpvarchar(50)

declare @query_bereich nvarchar(max)
set @query_bereich = 'select @artgrp = bereich' + convert(varchar(2),@bereich) +
    ' from ImpArtGruppe where Artikelnummer = ''' + @artnum + ''''
declare @artgrp varchar(50)
exec sp_executesql @query_bereich, '@artgrp varchar(50) output', @artgrp output
于 2012-09-26T11:00:38.210 に答える
0

スカラー値のみを返す必要がある場合 (つまり、複雑なものがない場合) は、代わりに sql 関数を使用する必要があります。

ここを参照してください: MSDN

ストアド プロシージャは、その呼び出しによって影響を受けたデータベースの行数を返すだけです。そのため、あなたの場合、プロシージャは 0 を返します。

于 2012-09-26T10:57:05.723 に答える