2008-09-22 18 views
9

He escrito algunos procedimientos almacenados de Oracle en estos hay más de 20 parámetros de entrada y de ellos se requieren más de 10 parámetros, quiero todos con algún valor y no quiero aceptar nulo valores para eso, ¿hay algo que pueda declarar en la definación del Procedimiento mismo que pueda restringir el parámetro de entrada nulo o tendré que verificar cada valor y levantar la excepción si el valor requerido es nulo?Cómo restringir los parámetros de entrada NULL en el procedimiento almacenado de Oracle

Respuesta

5

En PL/SQL no conozco ninguna forma de verificar cada uno.

Si llama al procedimiento almacenado desde una biblioteca externa, esa biblioteca puede tener esa funcionalidad. Probablemente esto no sea probable porque frecuentemente se requieren parámetros de entrada NULL.

Puede realizar un procedimiento auxiliar PL/SQL que, dado un valor, generará una excepción si es nulo para guardar en código redundante. Luego podría escribir un trozo de perl/python/groovy que absorbería su declaración de procedimiento y generaría estas llamadas a su procedimiento de verificación nula.

+1

Ditto, no creo que su posible –

+0

Eso es una locura! Acabo de descubrir esto después de pasar de SQL Server donde es tan simple decir "NOT NULL" junto al nombre del parámetro. – Milimetric

9

Sé que esto es una vieja pregunta, pero no hay otra opción (que se describe here):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL; 

Se puede definir este tipo (y number_not_null, etc) ya sea en el mismo paquete que los procedimientos almacenados, o en su propio paquete si desea usarlos en muchos lugares. A continuación, puede declarar parámetros de estos tipos.

Si NULL se transfieren como un argumento, obtendrá un mensaje de error muy útil:

cannot pass NULL to a NOT NULL constrained formal parameter 
Cuestiones relacionadas