sql >> Database >  >> RDS >> Oracle

Standaardwaarden voor opgeslagen procedure in Oracle

Standaardwaarden worden alleen gebruikt als de argumenten niet zijn opgegeven. In jouw geval deed je dat specificeer de argumenten - beide zijn opgegeven, met de waarde NULL. (Ja, in dit geval wordt NULL als een echte waarde beschouwd :-). Probeer:

EXEC TEST()

Deel en geniet.

Aanvulling :De standaardwaarden voor procedureparameters zijn zeker ergens begraven in een systeemtabel (zie de SYS.ALL_ARGUMENTS bekijken), maar om de standaardwaarde uit de weergave te halen, moet u tekst uit een LANG-veld extraheren, en dit zal waarschijnlijk pijnlijker blijken te zijn dan het waard is. De eenvoudige manier is om wat code aan de procedure toe te voegen:

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. SQL Server vervangen, alles verwijderen na een bepaald teken

  2. UPDATE met ORDER BY en LIMIT werken niet in MYSQL

  3. Pg_dump gebruiken om alleen insert-instructies uit één tabel binnen de database te krijgen

  4. Hoe verwijder ik enkele aanhalingstekens uit een tabel in postgresql?