Présentation des commandes du thème SQL

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 11.3 (Modifiée)


4D, à compter de la version 11, comporte un moteur SQL intégré. Le programme inclut également un serveur SQL pouvant répondre aux requêtes d'autres applications 4D ou d'applications tierces (via le pilote ODBC de 4D).

Les différents modes d'accès au moteur SQL de 4D, le paramétrage du serveur SQL ainsi que les commandes et mots-clés utilisables dans les requêtes SQL sont décrits dans un manuel séparé, Guide de référence 4D SQL.

Le thème "SQL" regroupe les diverses commandes 4D relatives à l'exploitation du SQL dans 4D :

contrôle du serveur SQL : LANCER SERVEUR SQL et ARRETER SERVEUR SQL

accès direct au moteur SQL intégré : FIXER VALEUR CHAMP NULL, Valeur champ Null, CHERCHER PAR SQL.

gestion des connexions aux sources de données internes ou externes (SQL Pass-through) : LISTE SOURCES DONNEES, Lire source donnees courante, SQL LOGIN, SQL LOGOUT.

commandes de haut niveau pour la manipulation des données dans le cadre de connexions SQL directes ou via ODBC : Debut SQL, Fin SQL, SQL ANNULER CHARGEMENT, SQL CHARGER ENREGISTREMENT, SQL EXECUTER, SQL EXPORTER, SQL Fin de selection, SQL FIXER OPTION, SQL FIXER PARAMETRE, SQL IMPORTER, SQL LIRE DERNIERE ERREUR, SQL LIRE OPTION.

Principes de fonctionnement des commandes SQL de haut niveau

Les commandes SQL intégrées de 4D débutent par le préfixe "SQL". Elles appliquent les principes suivants :

Vous pouvez utiliser ces commandes avec le moteur SQL interne de 4D ou dans une connexion externe ouverte directement ou via ODBC. La commande SQL LOGIN vous permet de définir le type de connexion à ouvrir.

La portée d'une connexion est le process. Si vous souhaitez gérer plusieurs connexions simultanément, vous devez démarrer un process par SQL LOGIN.

La commande SQL ANNULER CHARGEMENT permet d'exécuter plusieurs requêtes SELECT dans la même connexion.

Vous pouvez intercepter les erreurs ODBC éventuellement générées lors de l'exécution d'une des commandes SQL de haut niveau à l'aide la commande APPELER SUR ERREUR. La commande SQL LIRE DERNIERE ERREUR permet dans ce cas d'obtenir des informations supplémentaires.

Prise en charge du standard ODBC

Le standard ODBC (Open DataBase Connectivity) définit une librairie de fonctions standardisées. Ces fonctions permettent à une application telle que 4D d'accéder via le langage SQL à tout système de gestion de données compatible ODBC (bases de données, tableurs, autre application 4D, etc.).

Note : 4D permet également d'importer et d'exporter des données dans une source ODBC "manuellement" en mode Développement. Pour plus d'informations, reportez-vous au manuel Mode Développement de 4D.

Note : Les commandes SQL de haut niveau de 4D permettent de mettre en place des solutions simples pour faire communiquer les applications 4D et des sources de données ODBC. Si vos applications nécessitent une prise en charge plus étendue du standard ODBC, vous devrez acquérir le plug-in ODBC "bas niveau" de 4D, 4D ODBC Pro.

Correspondance des types de données

Le tableau suivant liste les correspondances établies automatiquement par 4D entre les types de données 4D et SQL :

Type 4DType SQL
C_ALPHASQL_C_CHAR
C_TEXTESQL_C_CHAR
C_REELSQL_C_DOUBLE
C_DATESQL_C_TYPE_DATE
C_HEURESQL_C_TYPE_TIME
C_BOOLEENSQL_C_BIT
C_ENTIERSQL_C_SHORT
C_ENTIER LONGSQL_C_SLONG
C_BLOBSQL_C_BINARY
C_IMAGESQL_C_BINARY
C_GRAPHESQL_C_BINARY

Référencer des expressions 4D dans les requêtes SQL

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 :

insérer le nom de l'objet 4D entre les caractères << et >> dans le texte de la requête.

faire précéder la référence de deux-point ":"

Exemples :

   SQL EXECUTER("INSERT INTO emp (empno,ename) VALUES (<<vEmpno>>,<<vEname>>)")
   SQL EXECUTER("SELECT age FROM People WHERE name= :vNom")

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)

Récupération des valeurs dans 4D

La récupération dans le langage de 4D des valeurs issues de requêtes SQL peut être effectuée de deux manières :

en utilisant les paramètres supplémentaires de la commande SQL EXECUTER (solution conseillée).

en utilisant la clause INTO dans la requête SQL elle-même (solution à réserver aux cas particuliers).


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant