SQL "SELECT ..."

Rôle :

 

Cette commande n'est pas à proprement parler une fonctionnalité supplémentaire. Elle est même un des éléments les plus marquants du SQL. Par contre, sa syntaxe a été légèrement étendue afin de supporter des assignations relatives à un curseur (ou ligne).

Dans la commande SELECT, lorsqu'on renseigne une "select-list" en nommant des champs de la base, on a la possibilité de spécifier une assignation par l'emploi juxtaposé d'un nom de variable L4G inclus entre crochets. Ces éventuelles assignations sont supprimées de la chaîne avant de la communiquer au driver O.D.B.C.. L'intérêt de spécifier une assignation dans cette déclaration est de lui limiter sa portée à ce curseur dans cette commande. Ces assignations ne sont absolument pas obligatoires. Dans le cas où aucune assignation ne serait reconnue, le gestionnaire O.D.B.C. d'OXYGENE++se contenterait de renvoyer la requête telle qu'elle au driver.

Cette commande est relative à une connexion qui a pu être nommée par la variable système SqlConnexion. Cette connexion doit obligatoirement avoir été créée par une commande CONNECT et être valide. De même, la commande SELECT est relative à un curseur qui a pu être renseigné par la variable système SqlCurseur. Le curseur sera clos par l'emploi d'une commande de fin de sélection, ou par une prochaine commande SELECT avec le même nom de curseur.

Cette commande se contente d'envoyer la requête au driver O.D.B.C.. Elle n'avance pas le curseur. Les données L4G implicitement désignées par la commande ne sont pas affectées.

Les variables système renseignent sur l'échec ou le succès de la commande. D'autres erreurs peuvent être retournées par le driver.

 

SqlErreurLibelle

SqlErreurNumero

Résultat

""

""

Succès

"Connexion non définie"

"OXY001"

Le nom de la connexion n'a pas pu être retrouvé

Exemple :

 

       SQL "SELECT NOM_COMMUN[NOM] FROM TABLE"

 

Le driver O.D.B.C. recevra SELECT NOM_COMMUN FROM TABLE et mémorisera une assignation entre NOM_COMMUN (dans la base de données) et NOM (dans leL4G).

 

Domaine : ESSAI
Objet CALCUL : VAL_DU_STOCK
Declaration
       
BASE:OD
       
TABLE:ART
       
VARIABLES :
              
Double VVAL_du_stock("Valorisation du stock")
              
Chaine VCOFAM ("Codes famille")
FinDeclaration
       
Methode JE_TESTE
              
SQL "CONNECT Server=""MS Access 2.0 Databases"", Qualifier=c:\access\gart.mdb"
              
//Vérification de la connexion
              
Si SqlErreurNumero<>"" Alors
                
BoiteMessage "Erreur sur Connect: "+SqlErreurLibelle
                
Sortir
              
FinSi
              
//Affectation de la variable VCOFAM
              
VCOFAM="EPI"
              
//Commande SQL pour sélectionner toutes les colonnes de la table

              //ARTICLE dont le code famille est égal à VCOFAM
              
SQL "SELECT * FROM ARTICLE WHERE COFAM='"+VCOFAM+"'"
              
//Vérification de l'ordre SELECT
              
Si SqlErreurNumero<>"" Alors
                
BoiteMessage "Erreur sur select :"+SqlErreurLibelle
                
Sortir
              
FinSi
              
//Boucle pour calculer la valorisation du stock
              
Tantque SqlErreurNumero = ""
                
//Commande SQL pour rapatrier dans la table OXYGENE les                                 

              //enregistrements sélectionnés dans la base Access
                
Sql "FETCH"
                
Si SqlErreurNumero = "" Alors
                           
VVAL_DU_STOCK=VVAL_DU_STOCK+(PRIX*QST)
                
Finsi
              
FinTantQue
              
//Affichage du calcul effectué
              
BoiteMessage "La valeur du stock de la famille"+VCOFAM+" est de :"+VVAL_DU_STOCK
              
Sortir
       
FinMethode
FinObjet