sql >> Base de Datos >  >> RDS >> Oracle

Valores predeterminados para el procedimiento almacenado en Oracle

Los valores predeterminados solo se utilizan si no se especifican los argumentos. En tu caso lo hiciste especifique los argumentos:se proporcionaron ambos, con un valor NULL. (Sí, en este caso NULL se considera un valor real :-). Prueba:

EXEC TEST()

Comparte y disfruta.

Anexo :Los valores predeterminados para los parámetros del procedimiento ciertamente están enterrados en una tabla del sistema en algún lugar (consulte el SYS.ALL_ARGUMENTS vista), pero obtener el valor predeterminado de la vista implica extraer texto de un campo LARGO, y probablemente resultará ser más doloroso de lo que vale. Lo fácil forma es agregar algo de código al procedimiento:

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;