4D v12.4Présentation des commandes du thème SQL |
||||||||||||||||||||||||||
|
4D v12.4
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 |
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 de compatibilité : Jusqu'à la version 11.6 de 4D, en mode compilé, vous ne pouviez pas utiliser de références à des variables locales (débutant par le signe $). Cette limitation est supprimée dans 4D à compter de la version 11.7.
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 :
Produit : 4D
Thème : SQL
Nom intl. : Overview of SQL Commands
Accéder au moteur SQL de 4D
EXPORTER ODBC
IMPORTER ODBC