Oracle
 sql >> база данни >  >> RDS >> Oracle

Стойности по подразбиране за съхранена процедура в Oracle

Стойностите по подразбиране се използват само ако аргументите не са посочени. Във вашия случай направихте посочете аргументите - и двата бяха предоставени със стойност NULL. (Да, в този случай NULL се счита за реална стойност :-). Опитайте:

EXEC TEST()

Споделяйте и се наслаждавайте.

Допълнение :Стойностите по подразбиране за параметрите на процедурата със сигурност са заровени някъде в системна таблица (вижте SYS.ALL_ARGUMENTS изглед), но извличането на стойността по подразбиране от изгледа включва извличане на текст от поле LONG и вероятно ще се окаже по-болезнено, отколкото си струва. Лесно начинът е да добавите някакъв код към процедурата:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Валидирането се изпълнява на всички редове при табулиране на Oracle ADF

  2. TO_DATE yy,yyyy ми дава различни резултати

  3. Как да изберем и оптимизираме индекси на Oracle?

  4. как да разделя колоните в резултат на заявка в база данни на oracle

  5. Потребителят на схемата на Oracle не може да създаде таблица в процедура