Nilai default hanya digunakan jika argumen tidak ditentukan. Dalam kasus Anda, Anda melakukannya tentukan argumen - keduanya disediakan, dengan nilai NULL. (Ya, dalam hal ini NULL dianggap sebagai nilai nyata :-). Coba:
EXEC TEST()
Bagikan dan nikmati.
Tambahan :Nilai default untuk parameter prosedur pasti terkubur dalam tabel sistem di suatu tempat (lihat SYS.ALL_ARGUMENTS
view), tetapi mengeluarkan nilai default dari tampilan melibatkan mengekstraksi teks dari bidang PANJANG, dan mungkin akan terbukti lebih menyakitkan daripada nilainya. mudah caranya adalah dengan menambahkan beberapa kode ke prosedur:
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;