Test de présence de paramètre de type '&1' en SQL - SQL/NoSQL - Programmation
Marsh Posté le 02-08-2005 à 15:51:33
procédure... ? procédure stockée ?
si oui, alors logiquement, tu peux faire juste " = val" après le type du paramètre lors de la déclaration, et il sera optionnel et prendra cette valeur en cas d'asbsence.
sinon, oui, il est censé valoir NULL s'il n'existe pas
Marsh Posté le 02-08-2005 à 15:59:52
En fait c'est un fichier de type fichier.sql avec un gros bloc de PL/SQL qui fait un traitement et remplit des tables temporaires, puis des requetes SQL qui sélectionnent les infos dans ces tables pour les mettre dans un fichier.lis
Le fichier est appelé "classiquement" :
@fichier.sql param1 param2 param3 param4
Tout fonctionne nickel si je ne fais aucun appel au paramètre 4.
Marsh Posté le 02-08-2005 à 16:09:24
c'est pas le boulot de SQL*Plus de vérifier que les paramétres sont renseignés... il faut le faire dans le shell qui appelle la commande ou alors mettre une valeur qui sera ignoré :
@fichier.sql param1 param2 param3 *
et decode('&4','*',NULL)
Marsh Posté le 02-08-2005 à 16:18:28
Ok merci au moins c'est clair...
Je vais donc essayer de farfouiller dans le .com où ce fichier est appelé pour donner une valeur par défaut au paramètre...
Merci
Marsh Posté le 02-08-2005 à 15:41:18
Bonjour tout le monde,
Je suis coincé sur un p'tit problème :
J'ai une procédure SQL qui reçoit 4 paramètres et qui effectue un certain nombre de SELECT.
Le fait est que le 4e paramètre peut être présent ou non et je l'appelle avec un SELECT '&4'...
S'il n'y est pas j'ai un avertissement SQL dans mon fichier résultat qui me dit que mon paramètre n'a pas été rentré et c'est très ennuyeux car j'ai un logiciel de mise en page qui extrait ligne par ligne des informations issues de mes SELECT pour les formater correctement.
Je voudrais donc savoir s'il existe un moyen d'ignorer ce paramètre en cas d'absence ou de sélectionner la valeur zéro par défaut.
J'ai tenté un NVL('&4', 0) mais ça ne marche pas...
En espérant que vous pourrez m'éclairer
Snew