Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||
|
4D v20 R7
Présentation des commandes du thème SQL
|
Type 4D | Type SQL |
C_ALPHA | SQL_C_CHAR |
C_TEXTE | SQL_C_CHAR |
C_REEL | SQL_C_DOUBLE |
C_DATE | SQL_C_TYPE_DATE |
C_HEURE | SQL_C_TYPE_TIME |
C_BOOLEEN | SQL_C_BIT |
C_ENTIER | SQL_C_SHORT |
C_ENTIER LONG | SQL_C_SLONG |
C_BLOB | SQL_C_BINARY |
C_IMAGE | SQL_C_BINARY |
C_GRAPHE | SQL_C_BINARY |
C_OBJET | SQL_C_BINARY |
4D propose deux modes d’insertion des expressions 4D (variable, tableau, champ, pointeur, expression valide) dans les requêtes SQL : l’association directe et la définition de paramètres via SQL FIXER PARAMETRE.
L'association directe peut être effectuée de deux manières :
SQL EXECUTER("INSERT INTO emp (empno,ename) VALUES (<<vEmpno>>,<<vEname>>)")
SQL EXECUTER("SELECT age FROM People WHERE name= :vNom")
Note : En mode compilé, vous pouvez utiliser des références à des variables locales (débutant par le signe $) uniquement dans certaines conditions (voir ci-dessous).
Dans ces exemples, les valeurs courantes des variables 4D vEmpno, vEname et vNom seront substituées aux paramètres lors de l’exécution de la requête. Cette solution fonctionne également avec les champs et les tableaux 4D.
Cette syntaxe, simple d’utilisation, présente toutefois l’inconvénient de n’être pas conforme à la norme SQL et de ne pas permettre l’utilisation de paramètres de sortie. Pour y remédier, vous pouvez utiliser la commande SQL FIXER PARAMETRE. Cette commande permet de définir chaque objet 4D à intégrer dans une requête ainsi que son mode d'utilisation (entrée, sortie ou les deux). La syntaxe produite est alors standard. Pour plus d'informations, reportez-vous à la description de la commande SQL FIXER PARAMETRE.
(1) Cet exemple exécute une requête SQL utilisant directement des tableaux 4D associés :
TABLEAU TEXTE(MonTabTexte;10)
TABLEAU ENTIER LONG(MonTabLong;10)
Boucle(vCounter;1;Taille tableau(MonTabTexte))
MonTabTexte{vCounter}:="Texte"+Chaine(vCounter)
MonTabLong{vCounter}:=vCounter
Fin de boucle
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<MonTabTexte>>, <<MonTabLong>>)"
SQL EXECUTER(SQLStmt)
(2) Cet exemple permet d’exécuter une requête SQL utilisant directement des champs 4D associés :
TOUT SELECTIONNER([Table 2])
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<[Table 2]Champ1>"+">,<<[Table 2]Champ2>>)"
SQL EXECUTER(SQLStmt)
(3) Cet exemple permet d’exécuter une requête SQL passant directement une variable via un pointeur non dépointé :
C_ENTIER LONG($vLong)
C_POINTEUR($vPointeur)
$vLong:=1
$vPointeur:=->$vLong
SQL LOGIN("mysql";"root";"")
SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPointeur"
SQL EXECUTER(SQLStmt)
En mode compilé, vous pouvez utiliser des références de variables locales (débutant par le caractère $) dans les instructions SQL sous certaines conditions :
SQL EXECUTER("select * from t1 into :$mavar") // fonctionne en mode compilé
C_TEXTE(tRequete)
tRequete:="select * from t1 into :$mavar"
SQL EXECUTER(tRequete) // erreur en mode compilé
La récupération dans le langage de 4D des valeurs issues de requêtes SQL peut être effectuée de deux manières :
Il est possible de placer directement le résultat d’une requête SQL dans une list box de type tableau. Cette fonction offre un moyen rapide de visualiser le résultat des requêtes SQL. Seules les requêtes de type SELECT peuvent être utilisées. Ce mécanisme n’est pas utilisable avec une base SQL externe.
Les principes de mise en oeuvre sont les suivants :
Exemple
Nous voulons récupérer tous les champs de la table PERSONS et placer leur contenu dans la list box dont le nom de variable est vlistbox. Dans la méthode objet d’un bouton (par exemple), il suffit d’écrire :
Debut SQL
SELECT * FROM PERSONS INTO <<vlistbox>>
Fin SQL
_o_EXPORTER ODBC
_o_IMPORTER ODBC
Blog: Read 4D object fields with SQL Engine
Produit : 4D
Thème : SQL
Nom intl. : Overview of SQL Commands
Modifié : 4D v17 R5
4D - Langage ( 4D v20 R7)