SVSQL

Icône du lien vers le conceptVoir également Icône du lien vers le conceptExemple

Gestion de bases de données par commande SQL.

L'instruction SVSQL permet d'accéder à des sources de données ODBC en utilisant des commandes SQL depuis les scripts SCADA Basic. La source ODBC doit être préalablement configurée au niveau du système d'exploitation. Ceci est documenté dans le chapitre Utilisation d'ODBC.

Support WebVue - Oui.

L'utilisation de connexions Sql préconfigurées avec les instructions SQL_CONNECTION, SQL_COMMAND et SQL_QUERY sont préférables à l'utilisation du verbe SVSQL (basé sur ODBC).

Les connexions Sql préconfiguré sont configurées dans l'Application Explorer. Consultez le chapitre Data Connections pour plus d'informations.

Le terme 'base de données' est utilisé ici dans le sens général, et n'a aucun rapport avec l'arbre des variables de configuration SV (précédemment connu sous le nom de 'base de données' de configuration).

Mode

Mnémonique

Syntaxe

1 CONNECT 1
2 DISCONNECT 2
3 BEGINTRANS 2
4 COMMIT 2
5 ROLLBACK 2
6 EXECUTE 3, 7
7 FETCH 2
8 GETCOL 4
9 GETROW 5
10 NUMCOL 2
11 ROWCOUNT 2
12 GETCOLNAME 4
13 GETCOLSIZE 6
14 FREE 2
15 ERROR 7

Syntaxe 1

LongVal = SVSQL(Mode, Source[, UserID] [, Password] [, Timeout]);

Type de retour : LONG

Argument

Définition

Source

Nom ODBC de la base. Type STR

UserID

Identifiant utilisateur pour accéder à la source ODBC. Type STR.

Password

Mot de passe utilisateur pour accéder à la source ODBC. Type STR

Timeout

Time out de connexion (en secondes). Type LONG.

Exécution

Mode

Mnémonique

Action

1

CONNECT

Connexion à une base de données ODBC.

Retour :

>0 Handle de connexion qui sera utilisée pour les transactions ultérieures.
-1 Une erreur, soit un problème dans la syntaxe d'instruction, soit une erreur lors de la connexion.

Syntaxe 2

LongVal = SVSQL(Mode, CHandle);

Type de retour : LONG

Argument

Définition

CHandle

Handle de connexion à la source ODBC. Type de retour : LONG.

Exécution

Mode

Mnémonique

Action

2

DISCONNECT

Une tentative est faite pour se déconnecter de la source ODBC en utilisant le handle donné.
Si une transaction est en cours, elle doit être stoppée ou terminée en utilisant COMMIT ou ROLLBACK avant d'effectuer la déconnexion avec DISCONNET. Si vous appelez DISCONNECT avant d'avoir fermé la transaction, un ROLLBACK est automatiquement fait.

Retour :

0 Déconnexion effectuée
-1 Problème de déconnexion ou de syntaxe
-2 Handle de connexion inconnu

3

BEGINTRANS

Débute une transaction. Par défaut la connexion est en auto-commit, toutes les transactions effectuées dans la base sont automatiquement marquées comme complétées dans la base sans nécessité d'appel explicite à COMMIT. L'exécution de cette fonction désactive l'auto- commit. L'auto- commit est réactivé lors de l'exécution de la fonction COMMIT ou ROLLBACK.

Retour :

0 Si transaction effectuée
-1 Problème de syntaxe ou opération refusée par le du driver
-2 Handle de connexion inconnu.

 

 

 

 

Tous les drivers ne supportent pas les transactions. D'autre part les modes de transactions sont gérés différemment selon les drivers. Ce verbe ne sera accepté que si les conditions suivantes sont réunies :

Le driver gère les transactions.
Lors d'un commit ou d'un rollback le driver conserve les curseurs en l'état ou les ferme mais ne les détruit pas.
Aucune requête n'est en cours (effectuez un FREE).

4

COMMIT

Effectue le commit.
Modifications made to the ODBC source during the current transaction are accepted.

Retour :

0 Commit effectué
-1 Problème de syntaxe ou opération refusée par le du driver
-2 Handle de connexion inconnu.

 

 

Pour pouvoir faire un COMMIT il faut avoir débuté une transaction par le mode BEGINTRANS. La gestion du COMMIT est différente selon le driver utilisé.

5

ROLLBACK

Effectue le ROLLBACK.
Annulation des modifications effectuées dans la base d'une transaction.

Retour :

Si effectué.
-1 Problème de syntaxe ou opération refusée par le du driver.
-2 Handle de connexion inconnu.

 

 

Pour pouvoir faire un COMMIT il faut avoir débuté une transaction par le mode BEGINTRANS. La gestion du ROLLBACK est différente selon le driver utilisé.

7

FETCH

Récupère le prochain enregistrement d'une requête. Cette fonction est utilisée après une requête EXECUTE qui renvoie des enregistrements.
A chaque fois que l'instruction s'exécute, il incrémente un pointeur interne de sorte que la prochaine fois qu'il l'exécute, il renvoie l'enregistrement suivant, et ainsi de suite jusqu'à ce que tous les enregistrements aient été récupérés. Ce comportement est similaire à la lecture des enregistrements depuis un fichier séquentiel.

Retour :

0 Fetch effectué et un enregistrement retourné.
1 Fetch effectué mais aucun enregistrement retourné. Soit il n'y avait pas d'enregistrements à retourner, soit le dernier enregistrement a été retourné par le FETCH.
-1 s'il y a un problème avec la syntaxe ou l'opération est refusée par le driver.
-2 si le handle est incorrect.

 

 

FETCH place l'enregistrement suivant dans un buffer interne mais ne fournit pas les valeurs au script SCADA Basic. Pour obtenir les valeurs vous devez utiliser le mode GETCOL ou GETROW.

10

NUMCOL

Retourne le nombre de colonnes dans un enregistrement issu d'une requête.

Retour :

>= 0 si OK. Le retour est le nombre de colonnes.
-1 s'il y a un problème avec la syntaxe ou l'opération est refusée par le driver.
-2 si le handle est incorrecte.

 

 

Cette fonction ne peut être utilisée que si la fonction EXECUTE a été préalablement appelée.

11

ROWCOUNT

Retourne le nombre d'enregistrements affectés par une requête de type Insert, Update ou Delete.

Retour :

>= 0 si OK. Le retour correspond au nombre d'enregistrements.
-1 Problème de syntaxe ou refus du driver
-2 Handle de connexion inconnu.

 

 

Cette fonction ne peut être utilisée que si la fonction EXECUTE a été préalablement appelée.

14

FREE

Libère les ressources utilisées par une requête SQL.

Retour :

0 Si effectué.
-1 Problème de syntaxe ou opération refusée par le du driver.
-2 Handle de connexion inconnu.

 

 

Chaque fois que vous appelez la fonction "FREE", les ressources de la requête précédente sont automatiquement libérées. Cette fonction est également effectuée de manière automatique lorsque vous appelez la fonction "DISCONNECT". L'instruction FREE doit également être utilisée avant de commencer une transaction.

Syntaxe 3

LongVal = SVSQL(Mode, CHandle, MsgString);

Type de retour : LONG

Argument

Définition

CHandle

Handle de connexion à la source ODBC. Type LONG.

MsgString

Chaîne contenant la requête SQL. Type STR.

Exécution

Mode

Mnémonique

Action

6

EXECUTE

Exécute une requête SQL sur une base de données.

Retour :

0 Si commande effectuée
-1 Problème de syntaxe ou opération refusée par le du driver
-2 Handle de connexion inconnu.

 

 

Une seule requête SQL peur être active à la fois pour une connexion donnée. Chaque fois que vous appelez cette fonction, la précédente requête SQL est automatiquement terminée et les éventuels résultats de cette requête sont perdus.

Syntaxe 4

LongVal = SVSQL(Mode, Shandle, ColNum, BHandle);

Type de retour : LONG

Argument

Définition

SHandle

Handle de connexion à la source ODBC. Type de retour : LONG.

ColNum

Numéro de la colonne à récupérer. Commence à 1 et est numéroté séquentiellement de gauche à droite. Type INTEGER

BHandle

Buffer devant contenir les champs récupérés. Type LONG.

Exécution

Mode

Mnémonique

Action

8

GETCOL

Récupère un champ dans un enregistrement issu d'une requête.
Cette fonction est utilisée après une requête EXECUTE qui renvoie des enregistrements et après une requête FETCH qui sélectionne l'enregistrement.

Les colonnes récupérées sont toujours transmises en format Chaîne de caractères quel que soit leur type dans la base. La longueur d'une colonne ne peut dépasser 255 caractères.

12

GETCOLNAME

Récupère le nom d'une colonne dans un enregistrement issu d'une requête.

Cette fonction est utilisée après une requête EXECUTE qui renvoie des enregistrements.

 

 

Retour :

0 < 2,047 l'instruction a été exécutée avec succès. La valeur retournée est le nombre de caractères placés dans le buffer.
-1 S'il y a un problème de syntaxe ou opération refusée par le driver.
-2 Handle de connexion inconnu.
-3 Buffer de réception trop petit pour contenir l'ensemble des caractères retournés.

Syntaxe 5

LongVal = SVSQL(Mode, Shandle, Bhandle, Delim);

Type de retour : LONG

Argument

Définition

CHandle

Handle de connexion à la source ODBC. Type LONG.

BHandle

Buffer devant contenir le champ récupéré. Type LONG.

Delim

Chaîne de caractères délimitant les champs. Type STR.

Exécution

Mode

Mnémonique

Action

9

GETROW

Récupère un enregistrement issu d'une requête et renvoie les données au format ascii délimité dans un buffer.
Cette fonction est utilisée après une requête EXECUTE qui renvoie des enregistrements et après une requête FETCH qui sélectionne l'enregistrement.

Retour :

>= 0 si OK. La valeur retournée est le nombre de caractères placés dans le buffer.
-1 S'il y a un problème de syntaxe ou opération refusée par le driver.
-2 Handle de connexion inconnu.
-3 Buffer de réception trop petit pour contenir l'ensemble des caractères retournés.

 

 

Les colonnes récupérées sont toujours transmises au format Chaîne de caractères quel que soit leur type dans la base.

Syntaxe 6

LongVal = SVSQL(Mode, CHandle, ColNum);

Type de retour : LONG

Argument

Définition

CHandle

Handle de connexion à la source ODBC. Type LONG.

ColNum

Numéro de la colonne à récupérer. Commence à 1 et est numéroté séquentiellement de gauche à droite. Type INTEGER.

Exécution

Mode

Mnémonique

Action

13

GETCOLSIZE

Récupère la taille maximum d'une colonne dans un enregistrement issu d'une requête EXECUTE.

 

 

Retour :

>= 0 si OK. La valeur retournée est la taille de la colonne.
-1 S'il y a un problème de syntaxe ou opération refusée par le driver.
-2 Handle de connexion inconnu.
-3 Buffer de réception trop petit pour contenir l'ensemble des caractères retournés.

 

 

La taille renvoyée ne correspond pas au nombre d'octets occupés par la colonne mais au nombre max de caractères nécessaires pour renvoyer les données de la colonne sous un format texte.

Syntaxe 7

LongVal = SVSQL(Mode, CHandle, BHandle);

Type de retour : LONG

Argument

Définition

CHandle

Handle de connexion à la source ODBC. Type LONG.

BHandle

Buffer devant contenir le message d'erreur. Type LONG.

Exécution

Mode

Mnémonique

Action

6

EXECUTE

Exécute une requête SQL sur une base de données.

Retour :

0 Si commande effectuée
-1 Problème de syntaxe ou opération refusée par le driver
-2 Handle de connexion inconnu.

 

 

Une seule requête SQL peur être active à la fois pour une connexion donnée. Chaque fois que vous appelez cette fonction, la précédente requête SQL est automatiquement terminée et les éventuels résultats de cette requête sont perdus.

15

ERROR

Retourne le dernier message d'erreur renvoyé par le driver ODBC et le place dans le buffer spécifié par son handle.

Retour :

>= 0 si OK. Le retour correspond au nombre d'octets dans le message.
-1 s'il y a un problème de syntaxe ou opération refusée par le driver.
-2 Handle de connexion inconnu.
-3 Buffer de réception trop petit pour le nombre de caractères retournés.

Exemple

Pour un exemple, sélectionnez le lien Exemple ci-dessus.