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

Standardværdier til Stored Procedure i Oracle

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;


  1. Forward Engineering MySQL Workbench Error 1064

  2. MySQL ENUM type vs join tabeller

  3. Når jeg undslipper alle input, efterlader den nogle gange skråstreger (\) i strengen og indsætter den i databasen. Hvorfor sker det, og hvordan kan jeg løse dette?

  4. Forskellen mellem database, tabel, kolonnesortering