Oracle
 sql >> Base de données >  >> RDS >> Oracle

Valeurs par défaut de la procédure stockée dans Oracle

Les valeurs par défaut ne sont utilisées que si les arguments ne sont pas spécifiés. Dans votre cas, vous avez fait spécifiez les arguments - les deux ont été fournis, avec une valeur de NULL. (Oui, dans ce cas NULL est considéré comme une valeur réelle :-). Essayez :

EXEC TEST()

Partagez et profitez.

Avenant :Les valeurs par défaut des paramètres de procédure sont certainement enterrées dans une table système quelque part (voir le SYS.ALL_ARGUMENTS view), mais obtenir la valeur par défaut de la vue implique d'extraire du texte d'un champ LONG, et va probablement s'avérer plus pénible que cela ne vaut. Le facile consiste à ajouter du code à la procédure :

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;