VADELIA |
SADELIA |
WADELIA |
EADELIA |
|
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(B) (S) |
Attention : cet ordre n'est pas compatible avec les parties serveur AS/400.
Paragraphe d'utilisation
Tous
Syntaxe
CONST_INSTR_SQL NomInstructionSQL InitOuValeur
InitOuValeur |
→ |
*INIT | *INIT ConstanteAlpha | ConstanteAlpha |
CONST_INSTR_SQL NomInstructionSQL RecupMode idVarInstr
RecupMode |
→ |
*RECUP_INSTR | *RECUP_INSTR_VL |
Description
Cet ordre construit une instruction SQL. Les instructions SQL construites par cet ordre sont exemptées d'injection SQL.
Le paramètre *INIT réinitialise l'instruction SQL.
La constante ConstanteAlpha est ajoutée à la valeur courante de l'instruction SQL. Dans le cas où cette constante comporte des éléments :idVariable, ces éléments seront remplacés par un ? dans le cas d'une instruction SQL de type *CLONE ou REFERENCE, ou par leur valeur assainie (au sens SQL) dans le cas d'une instruction SQL de type *VALEUR.
L'utilisation du paramètre *RECUP_INSTR a pour effet de placer dans la variable idVarInstr le contenu de l'instruction construite.
L'utilisation du paramètre *RECUP_INSTR_VL a pour effet de placer dans la variable idVarInstr le contenu de l'instruction construite avec la valeur des paramètres à la place du caractère ? pour les types *CLONE et *REFERENCE.
Par exemple
Exemple 1:
INSTRUCTION_SQL inst1 *CLONE
CURSEUR cur1 :inst1
W1 = 'ABC'
W2 = 45
CONST_INSTR_SQL inst1 *INIT 'Select COL_1 FROM ENTITE1 WHERE COL1 <> :W1'
CONST_INSTR_SQL inst1 ' AND COL_2 = :W2 '
CONST_INSTR_SQL inst1 *RECUP_INSTR MaRequête
* la variable MaRequête a pour valeur 'Select COL_1 FROM ENTITE1 WHERE COL1 <> ? AND COL_2 = ? '
W1 = *BLANK
W2 = 0
OUVRIR_SQL_C cur1
* le curseur est ouvert avec des variables hôtes de substitution ayant pour valeur 'ABC' et 45 (valeur des variables au moment de l'exécution du CONST_INTR_SQL les mentionnant)
LIRE_AV_SQL_C cur1 :WRESULT1
…
FERMER_SQL_C cur1
Exemple 2 :
INSTRUCTION_SQL inst2 *REFERENCE
LISTE maliste *REF_MLD(ENTITE1)
CONST_INSTR_SQL inst2 *INIT
CONST_INSTR_SQL inst2 'COL_1 = :W1 AND COL_2 = :W2'
W1 = 'ABC'
W2 = 45
CHARGER_SQL_LST maliste ENTITE1 *COND(:inst2)
* Le curseur interne utilisé pour charger maliste sera un curseur avec des variables hôtes de substitution ayant pour valeur 'ABC' et 45 (valeur des variables au moment de l'exécution du CHARGER_SQL_LST).
Exemple 3 :
INSTRUCTION_SQL inst3 *REFERENCE
CONST_INSTR_SQL inst3 *INIT 'COL_1 <> :W1 AND COL_2 = :W2'
W1 = 'ABC'
W2 = 45
CONST_INSTR_SQL inst3 *RECUP_INSTR_VL MaRequete
* la variable MaRequete a pour valeur 'Select COL_1 FROM ENTITE1 WHERE COL1 <> 'ABC' AND COL_2 = 45 '
Exemple 4 :
INSTRUCTION_SQL inst4 *VALEUR
CONST_INSTR_SQL inst4 *INIT 'COL_1 <> :W1 AND COL_2 = :W2'
W1 = 'ABC'
W2 = 45
CONST_INSTR_SQL inst4 *RECUP_INSTR MaRequete ↑ Haut de page
* la variable MaRequete a pour valeur 'Select COL_1 FROM ENTITE1 WHERE COL1 <> 'ABC' AND COL_2 = 45 '
CONST_INSTR_SQL inst4 *RECUP_INSTR_VL MaRequete
* la variable MaRequete a pour valeur 'Select COL_1 FROM ENTITE1 WHERE COL1 <> 'ABC' AND COL_2 = 45 '
*RECUP_INSTR et *RECUP_INSTR_VL sont identiques dans le cas d'une INSTRUCTION_SQL de type *VALEUR