|
VADELIA |
SADELIA |
WADELIA |
MADELIA |
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(I) (S) |
Attention :
Paragraphe d'utilisation
Tous
Syntaxe
EXEC_PROC_SQL 'NomProcedure' ListeParametres ParametreRetour
ParametreRetour |
→ |
*RETOUR(IdVarHote) | Rien |
ListeParametres |
→ |
SuiteParamètres | Rien |
SuiteParametres |
→ |
SuiteParamètres, Paramètre | Paramètre |
Parametre |
→ |
Constante | IdVarHote Genre |
IdVarHote |
→ |
:IdVar | :IdVar :IdVarIndicatrice |
Genre |
→ |
I | O | B | Rien |
Constante |
→ |
'ConstanteAlpha' | ConstanteNumérique |
Description
Cet ordre permet d'appeler une procédure stockée SQL rendant ses résultats via les paramètres définis en sortie, ou en entrée/sortie, et/ou via un paramètre résultat.
Seules les procédures prenant en paramètre des types simples et retournant un résultat unique sont supportées. Les procédures retournant un jeu de résultats (curseur) ne sont pas supportées.
Les paramètres peuvent être de n'importe quel type simple géré par Adélia, à l'exclusion du type IMAGE.
Le paramètre *RETOUR permet de définir la variable recevant la valeur de retour de la procédure, dans le cas où celle-ci retourne un résultat.
A noter que le paramètre *RETOUR n'est pas forcément supporté par tous les gestionnaires de base de données implémentant le support des procédures stockées. Notamment, il n'est pas supporté par DB2.
Le genre d'un paramètre est précisé à l'aide d'une des trois lettres suivantes :
I : paramètre en entrée.
O : paramètre en sortie.
B : paramètre en entrée/sortie.
Si le genre n'est pas précisé, le paramètre est considéré comme un paramètre en entrée (I).
Après exécution de l'ordre, il est possible de tester le code retour SQL à l'aide du mot réservé *SQLCODE.
Attention :
L'utilisation du caractère ',' à la fois comme séparateur de paramètres et comme séparateur de décimales peut provoquer des ambiguïtés.
Dans ce cas, on considère que le caractère est évalué prioritairement comme un séparateur de décimales.
Ainsi, le texte 21,22,23, dans la spécification des paramètres est interprété comme la définition de deux paramètres : le premier de valeur 21,22 et le deuxième de valeur 23.
De même, pour exprimer deux paramètres entiers, vous devez mettre un espace avant ou après la virgule : 21, 22 (et non 21,22).
Par exemple
* Création de la procédure GetServerName qui renvoie le nom du serveur de base de données
CHOIX_SELON *SGBD
SI_VALEUR 'ORACLE'
Requete = 'create or replace procedure GetServerName (vServerName out varchar2) as begin select distinct rtrim(machine) into vServerName from sys.v_$session where username is null; end;'
exec_sql(:Requete)
...
FIN_CHOIX_SELON
* Appel de la procédure
EXEC_PROC_SQL 'GetServerName' :ServerName O