Oracle
 sql >> Database >  >> RDS >> Oracle

Valori predefiniti per Stored procedure in Oracle

I valori predefiniti vengono utilizzati solo se gli argomenti non sono specificati. Nel tuo caso l'hai fatto specificare gli argomenti:entrambi sono stati forniti, con un valore di NULL. (Sì, in questo caso NULL è considerato un valore reale :-). Prova:

EXEC TEST()

Condividi e divertiti.

Appendice :I valori predefiniti per i parametri della procedura sono certamente sepolti in una tabella di sistema da qualche parte (vedi SYS.ALL_ARGUMENTS view), ma ottenere il valore predefinito dalla vista implica l'estrazione di testo da un campo LUNGO e probabilmente si rivelerà più doloroso di quanto non valga la pena. Il facile il modo è aggiungere del codice alla procedura:

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;