3

この問題に遭遇しましたが、なぜ機能しないのかわかりません。

オプションの2番目のパラメーターを持つストアドプロシージャがあります。

PROCEDURE [dbo].[gsp_MyProC] @Account_Number VARCHAR(10), @Referral_Type VARCHAR(5) ='1'

現在、@Referral_TypeSQLステートメントで使用されており、現在、プロシージャに渡されることはありません(レガシーコード、質問しないでください)。ただし、1に設定されず、そのままになっている場合がありnullます(パラメーターを返すことで確認できます)。

私が使用する場合:

SET @Referral_Type = 1

ストアドプロシージャ内では、常に設定されます(予想どおり)。

しかし、デフォルト値が1に設定されない理由を誰かが知っていますか?

ありがとう

4

2 に答える 2

4

パラメータを提供しないことと、パラメータの値を提供することには違いがありNULLます。

EXEC dbo.gsp_MyProC 'AccountNumber', NULL

結果として@Referral_Type = NULL

でも...

EXEC dbo.gsp_MyProC 'AccountNumber'

結果として@Referral_Type = '1'

クライアントライブラリがNULLまったく値を提供しないのではなく、値を提供している可能性があります。

回避策として...@Referral_Type絶対にすべきでない場合は、ストアドプロシージャの先頭にNULL追加できます。SET @Referral_Type = ISNULL(@Referral_Type, '1')

于 2012-11-09T21:41:18.413 に答える
0

パラメータを変更する場合は、SPの定義でOUTPUT修飾子を使用する必要があることに注意してください。また、呼び出しの定義に出力パラメータを作成しました。


あなたの答えには意味がありません---

 SET @Referral_Type = 1

定数1は文字列ではないため、不正である必要があります。

あなたがあなたの質問で説明しているように、私はそれが決して設定されないことを期待します1-それは常に設定されます'1'

たぶん、あなたは常に結果の「最初の」要素配列(またはs[1])を見ていますか?文字列はc、c ++、およびC#でnullで終了するため、これは常にnullになります。

于 2012-11-09T21:27:36.647 に答える