stored procedure
次のように。
CREATE OR REPLACE PROCEDURE TEST(X IN VARCHAR2 DEFAULT 'P',Y IN NUMBER DEFAULT 1) AS
BEGIN
DBMS_OUTPUT.PUT_LINE('X'|| X||'--'||'Y'||Y);
END;
上記の手順を実行すると
EXEC TEST(NULL,NULL);
X--Y
。入力パラメーターがnull
の場合、入力パラメーターは、プロシージャシグネチャで指定された値にデフォルト設定されません。 default
値の使用は何ですか? null
値を入力として渡し、null
値をdefault
値で置き換えたい場合はどうなりますか?
デフォルト値は、引数が指定されていない場合にのみ使用されます。あなたの場合、did引数を指定します-両方ともNULLの値が指定されました。 (はい、この場合、NULLは実際の値と見なされます:-)。試してください:
EXEC TEST()
共有してお楽しみください。
補遺:プロシージャパラメータのデフォルト値は、どこかのシステムテーブルに確実に埋め込まれます(SYS.ALL_ARGUMENTS
view)、ただし、ビューからデフォルト値を取得するには、LONGフィールドからテキストを抽出する必要があり、おそらくそれが価値があるよりも苦痛であることが判明するでしょう。 easyの方法は、手順にコードを追加することです。
CREATE OR REPLACE PROCEDURE TEST(X IN VARCHAR2 DEFAULT 'P',
Y IN NUMBER DEFAULT 1)
AS
varX VARCHAR2(32767) := NVL(X, 'P');
varY NUMBER := NVL(Y, 1);
BEGIN
DBMS_OUTPUT.PUT_LINE('X=' || varX || ' -- ' || 'Y=' || varY);
END TEST;