2008-09-22 9 views
9

J'ai écrit des procédures Oracle stockées dans ceux-ci il y a plus de 20 paramètres d'entrée et d'eux plus de 10 paramètres sont requis, je veux tous avec une certaine valeur et ne veux pas accepter null Y at-il quelque chose que je peux déclarer dans la définition de la procédure elle-même qui peut restreindre le paramètre d'entrée NULL ou Dois-je vérifier chaque valeur et Augmenter l'exception si la valeur requise est NULL?Comment limiter les paramètres d'entrée NULL dans la procédure stockée oracle

Répondre

5

En PL/SQL, je ne connais pas le moyen de vérifier chacun d'entre eux.

Si vous appelez la procédure stockée à partir d'une bibliothèque externe, cette bibliothèque peut avoir cette fonctionnalité. Cela n'est probablement pas probable car les paramètres d'entrée NULL sont souvent requis.

Vous pouvez créer une procédure PL/SQL d'assistance qui, si elle est associée à une valeur, déclenche une exception si elle doit être nulle pour enregistrer le code redondant. Vous pourriez alors écrire un morceau de perl/python/groovy qui soutiendrait votre déclaration de procédure et lancer ces appels à votre procédure de vérification nulle.

+1

Ditto, je ne pense pas que son possible –

+0

C'est fou! Je viens de découvrir cela après avoir quitté SQL Server où il est aussi simple de dire "NOT NULL" à côté du nom du paramètre. – Milimetric

9

Je sais c'est une vieille question, mais il y a une autre option (décrite here):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL; 

Vous pouvez définir ce type (et number_not_null, etc.) soit dans le même paquet que vos procédures stockées, ou dans leur propre paquet si vous voulez les utiliser dans beaucoup d'endroits. Vous pouvez ensuite déclarer les paramètres d'être ces types.

Si NULL est transmis comme argument, vous obtiendrez un très utile message d'erreur:

cannot pass NULL to a NOT NULL constrained formal parameter 
Questions connexes