sql >> Databáze >  >> RDS >> Oracle

Výchozí hodnoty uložené procedury v Oracle

Výchozí hodnoty se použijí pouze v případě, že argumenty nejsou zadány. Ve vašem případě udělali zadejte argumenty - byly dodány oba s hodnotou NULL. (Ano, v tomto případě je NULL považována za skutečnou hodnotu :-). Zkuste:

EXEC TEST()

Sdílejte a užívejte si.

Dodatek :Výchozí hodnoty parametrů procedury jsou jistě někde pohřbeny v systémové tabulce (viz SYS.ALL_ARGUMENTS zobrazení), ale získání výchozí hodnoty ze zobrazení vyžaduje extrahování textu z LONG pole a pravděpodobně se ukáže být bolestivější, než by stálo za to. Snadné způsob je přidat nějaký kód do procedury:

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. uložená procedura v SQL CLR

  2. MySQL implementace ray-casting algoritmu?

  3. Příklad hromadného sběru Oracle PL/SQL s výjimkami uložení

  4. jak importovat z MS Excel do MYSQL DB