Exécuter des instructions SQL avec SQL EXECUTE
Application
SQL EXECUTE s'utilise avec différentes instructions SQL.
Conditions requises
- Code 555343
- Tableau disponible
- Nom de tableau adapté
Le nom des tableaux et des colonnes doit commencer par une lettre et ne doit pas comporter de signe opérateur, comme par exemple +. Étant donné les instructions SQL, ces signes peuvent occasionner des problèmes lors de l'importation ou de la lecture des données.
Description fonctionnelle
La CN propose les instructions SQL suivantes dans l’instruction SQL EXECUTE :
Instruction | Fonction |
---|---|
SELECT | Sélectionner des données |
CREATE SYNONYM | Créer un synonyme (remplacer les chemins d'accès longs par des noms courts) |
DROP SYNONYM | Effacer un synonyme |
CREATE TABLE | Créer un tableau |
COPY TABLE | Copier un tableau |
RENAME TABLE | Renommer un tableau |
DROP TABLE | Effacer un tableau |
INSERT | Insérer des lignes de tableau |
UPDATE | Actualiser des lignes du tableau |
DELETE | Supprimer des lignes du tableau |
ALTER TABLE |
|
RENAME COLUMN | Renommer des colonnes de tableau |
SQL EXECUTE avec l’instruction SQL SELECT
Le serveur SQL sauvegarde les données ligne par ligne dans le Result-set (quantité de résultat). Les lignes sont numérotées en commençant par 0, de manière continue. Ce numéro de ligne (l'INDEX) est utilisé pour les instructions SQL FETCH et UPDATE.
SQL EXECUTE, en combinaison avec l'instruction SQL SELECT, sélectionne des valeurs du tableau, les transfère dans le Result-set et ouvre ainsi systématiquement une transaction. Contrairement à l'instruction SQL SQL SELECT, le fait de combiner SQL EXECUTE avec l'instruction SELECT permet de sélectionner plusieurs lignes et colonnes en même temps.
Dans la fonction SQL ... "SELECT...WHERE...", vous entrez les critères de recherche. Ceci vous permet de limiter au besoin le nombre de lignes à transférer. Si vous n'utilisez pas cette option, toutes les lignes du tableau seront chargées.
Dans la fonction SQL ... "SELECT...ORDER BY...", vous entrez le critère de tri. Ce critère se compose de la désignation de la colonne et du mot de passe ASC pour le tri croissant, ou DESC pour le tri décroissant. Si vous n'utilisez pas cette option, les lignes seront mises en ordre aléatoire.
Avec la fonction SQL ... "SELECT...FOR UPDATE", vous bloquez les lignes sélectionnées pour d'autres applications. D'autres applications peuvent lire ces lignes mais non pas les modifier. Si vous souhaitez modifier les entrées du tableau, vous devez impérativement utiliser cette option.
Result-set vide : Si aucune ligne ne correspond au critère de recherche, le serveur SQL retourne un HANDLE valide sans entrée de tableau.
Condition | Programmation |
---|---|
égal à | = == |
différent de | != <> |
inférieur à | < |
inférieur ou égal à | <= |
supérieur à | > |
supérieur ou égal à | >= |
vide | IS NULL |
non vide | IS NOT NULL |
Combiner plusieurs conditions: | |
ET logique | AND |
OU logique | OR |
Remarques
- Vous pouvez aussi définir des synonymes pour des tableaux qui n'ont pas encore été générés.
- L'ordre des colonnes du fichier généré respecte l'ordre de l'instruction AS SELECT.
- Pour les consignes au sein de l'instruction SQL, vous pouvez également utiliser des paramètres QS simples ou composés.
- Si vous vérifiez le contenu d'un paramètre QS dans l'affichage d'état supplémentaire (onglet QPARA), vous ne verrez que les 30 premiers caractères, et non le contenu intégral.
Exemple
11 SQL BIND Q881 "Tab_Example.Position_Nr" | |
12 SQL BIND Q882 "Tab_Example.Measure_X" | |
13 SQL BIND Q883 "Tab_Example.Measure_Y" | |
14 SQL BIND Q884 "Tab_Example.Measure_Z" | |
. . . | |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr<20" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM Tab_Example WHERE Position_Nr==:’Q11’" |
20 SQL Q5 "SELECT Position_Nr,Measure_X,Measure_Y, Measure_Z FROM ’V:\table\Tab_Example’ WHERE Position_Nr<20" |
0 BEGIN PGM SQL_CREATE_TAB MM | |
1 SQL Q10 "CREATE SYNONYM NEW FOR 'TNC:\table\NewTab.TAB'" | ; Créer un synonyme |
2 SQL Q10 "CREATE TABLE NEW AS SELECT X,Y,Z FROM 'TNC:\prototype_for_NewTab.tab'" | ; Créer un tableau |
3 END PGM SQL_CREATE_TAB MM |
0 BEGIN PGM SQL_CREATE_TABLE_QS MM | |
1 DECLARE STRING QS1 = "CREATE TABLE " | |
2 DECLARE STRING QS2 = "'TNC:\nc_prog\demo\Doku\NewTab.t' " | |
3 DECLARE STRING QS3 = "AS SELECT " | |
4 DECLARE STRING QS4 = "DL,R,DR,L " | |
5 DECLARE STRING QS5 = "FROM " | |
6 DECLARE STRING QS6 = "'TNC:\table\tool.t'" | |
7 QS7 = QS1 || QS2 || QS3 || QS4 || QS5 || QS6 | |
8 SQL Q1800 QS7 | |
9 END PGM SQL_CREATE_TABLE_QS MM |