Standardværdier bruges kun, hvis argumenterne ikke er angivet. I dit tilfælde gjorde det angiv argumenterne - begge blev leveret med værdien NULL. (Ja, i dette tilfælde betragtes NULL som en reel værdi :-). Prøv:
EXEC TEST()
Del og nyd.
Tillæg :Standardværdierne for procedureparametre er helt sikkert begravet i en systemtabel et eller andet sted (se SYS.ALL_ARGUMENTS
view), men at få standardværdien ud af visningen involverer at udtrække tekst fra et LANG felt, og det vil sandsynligvis vise sig at være mere smertefuldt, end det er værd. Det lette måde er at tilføje noget kode til proceduren:
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;