Test de présence de paramètre de type '&1' en SQL

Test de présence de paramètre de type '&1' en SQL - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 02-08-2005 à 15:41:18   

Reply

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

Reply

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.

Reply

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)

Reply

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 ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed