Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Valores padrão para procedimento armazenado no Oracle


Os valores padrão são usados ​​apenas se os argumentos não forem especificados. No seu caso, você fez especifique os argumentos - ambos foram fornecidos, com um valor NULL. (Sim, neste caso NULL é considerado um valor real :-). Tentar:
EXEC TEST()

Compartilhe e curta.

Adendo :Os valores padrão para os parâmetros do procedimento estão certamente enterrados em uma tabela do sistema em algum lugar (veja o SYS.ALL_ARGUMENTS view), mas obter o valor padrão da view envolve extrair texto de um campo LONG e provavelmente será mais doloroso do que vale a pena. O fácil maneira é adicionar algum código ao procedimento:
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;