デフォルト値は、引数が指定されていない場合にのみ使用されます。あなたの場合、した 引数を指定します - 両方とも NULL の値で指定されました。 (はい、この場合、NULL は実際の値と見なされます :-)。試してみてください:
EXEC TEST()
共有して楽しんでください。
補遺 :プロシージャ パラメータのデフォルト値は、システム テーブルのどこかに確実に埋め込まれています (SYS.ALL_ARGUMENTS
を参照してください)。 しかし、ビューからデフォルト値を取得するには、LONG フィールドからテキストを抽出する必要があり、おそらく、その価値よりも苦痛であることが判明するでしょう。 簡単 方法は、手順にコードを追加することです:
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;