ADELIA |
VADELIA |
SADELIA |
WADELIA |
MADELIA |
(I/B) |
(I/B) (S) |
(B) (S) |
(I/B) (S) |
(I) (S) |
Attention : dans le cas des programmes de type ADELIA, cet ordre est uniquement compatible avec le générateur RPG.
Paragraphe d'utilisation
Tous
Syntaxe
CREER_SQL NomEntité ParamètreNull ParamètreValeurIdentité ParamètresBloc ParamètreRG
ParamètreNull |
→ |
*INDIC_NULL | Rien |
ParamètreValeurIdentité |
→ |
*RECUP_VAL_GEN | Rien |
ParamètresBloc |
→ |
*BLOC(taille) NomListe | Rien |
ParamètreRG |
→ |
*NON_RG | *RG | Rien |
Description
Cet ordre crée un enregistrement dans l'entité NomEntité, en prenant les valeurs des variables entité correspondant aux champs.
Pour les programmes de type autre que ADELIA, il est possible de s'assurer que l'enregistrement n'est pas verrouillé en le testant à l'aide du mot réservé *BLOQUE.
Le paramètre *INDIC_NULL permet de prendre en compte la gestion des valeurs NULL (alimentées suite à une lecture ou à l'utilisation de l'ordre AFFECTER_INDIC) lors de l'écriture de la ligne.
Le paramètre *RECUP_VAL_GEN permet la récupération de la dernière valeur identité générée, dans le cas d'une table possédant une colonne auto-incrémentée. Le type auto-incrément peut avoir certaines limitations en fonction du SGBD utilisé. Voir la rubrique Limitations des types de données pour plus d'informations.
Le paramètre *BLOC permet l'insertion par bloc des enregistrements (insertions multi-lignes).
La taille est une constante numérique indiquant le nombre maximum d'enregistrements du bloc.
Chaque enregistrement à insérer étant un élément de la liste NomListe, les correspondances entre les zones de l'entité et les colonnes de la liste se font par leur position (la première colonne de la liste correspond à la première zone de l'entité,...).
Si les valeurs NULL sont gérées, la liste doit être déclarée avec le paramètre *INDIC.
Si la liste contient plus d'éléments que la taille d'un bloc on fera autant d'insertions par bloc que nécessaire pour traiter tous les éléments de la liste.
Lorsque le paramètre *BLOC est indiqué, les règles de gestion implicites ne sont pas générées.
Le paramètre *BLOC n'est pas disponible pour les programmes de type ADELIA.
Le paramètre *RG permet de générer les règles de gestion implicites de création liées à l'entité, même si le programme est généré sans l'option de génération des règles de gestion implicites.
Le paramètre *NON_RG permet de ne pas générer les règles de gestion implicites de création liées à l'entité, même si le programme est généré avec l'option de génération des règles de gestion implicites.
Après exécution de l'ordre, il est possible de tester le code retour SQL à l'aide du mot réservé *SQLCODE.
Dans le cas d'une insertion par bloc, un *SQLCODE à 0 avec un SGBD autre que DB2/400 vous assure que toute les lignes ont été traitées.
Cependant, il est possible que certaines lignes n'aient pas été insérées si elles provoquaient une violation de contrainte (clé en double en général).
Le mot réservé *SQLROW_COUNT rend le nombre de lignes insérées. Le test *SQLROW_COUNT = &NBR_ELT(NomListe) vous assure que toutes les lignes de la liste ont été insérées sans erreur.
Par exemple
CREER_SQL CLIENT
VERIFIER FEN_MAJ_PROD
RAPATRIER PRODUIT
CREER_SQL PRODUIT
* Ces lignes permettent :
* - la vérification des zones maquette d'une fenêtre,
* - le transfert des zones maquette vers les zones fichiers de l'entité PRODUIT,
* - la création de l'enregistrement PRODUIT.
Autres exemples d'utilisation
1.
AFFECTER_INDIC *VRAI CLIENT CLI_ADRESS2
CREER_SQL CLIENT *INDIC_NULL
Cet exemple permet, pour la création d'un enregistrement dans la table CLIENT, de fixer la valeur NULL pour la colonne CLI_ADRESS2.
2.
LISTE LstArticles *REF_MLD(ARTICLES)
...
CREER_SQL ARTICLE *BLOC(100) LstArticles
Cet exemple permet de faire des insertions multi-lignes. Si la liste contenait 230 éléments alors 3 INSERT SQL ont été exécutées (2 INSERT de blocs de 100 enregistrements et 1 INSERT d'un bloc de 30 enregistrements).