0

たとえば4つのパラメータを使用してSybaseASAにストアドプロシージャ「test」があります。

par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''

ここで、デフォルト値としてpar1を使用してこのストアドプロシージャを実行します。

call test(NULL, 'test')

しかし、par1の実際の値は0ではなく1です!

私も試しました

call test(DEFAULT, 'test')

しかし、それは実行されません。

4

2 に答える 2

1

1)NULL値を渡したため、最初の例は機能しませんでした。

2)彼のSPに使用している構文(「par1」について聞いたことがない)はよくわかりませんが、標準の構文を使用する場合は、SPと呼び出しで名前付きパラメーターを指定する必要があります。

CREATE PROCEDURE test(INOUT var1 INT DEFAULT 0、

                   INOUT var2 VARCHAR(50)  DEFAULT NULL,

                   INOUT var3 VARCHAR(100) DEFAULT NULL,

                   INOUT var3 VARCHAR(10)  DEFAULT '')

その後、電話します

CALLテスト(var2 ='テスト')

于 2009-09-03T19:43:29.947 に答える
0

最初の実行で、プロシージャのpar1が1であることを確認します。渡した値は実際にはNULLだと思います。

デフォルトのパラメータは、poarameterが渡されない場合にのみ使用され、値がNULLであっても値が指定されている場合は使用されません。

したがって、csesではpar3とpar4がデフォルトを取得しますが、par1とpar2は渡されたものを取得します。

于 2009-08-21T23:37:15.493 に答える