SVSQL
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. |
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é. Retour : 0 Déconnexion effectuée |
|
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 |
|
|
|
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. |
|
4 |
COMMIT |
Effectue le commit. Retour : 0 Commit effectué |
|
|
|
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. Retour : Si effectué. |
|
|
|
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. Retour : 0 Fetch effectué et un enregistrement retourné. |
|
|
|
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. |
|
|
|
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. |
|
|
|
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é. |
|
|
|
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 |
|
|
|
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. 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. |
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. Retour : >= 0 si OK. La valeur retournée est le nombre de caractères placés dans le buffer. |
|
|
|
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. |
|
|
|
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 |
|
|
|
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. |
Exemple
Pour un exemple, sélectionnez le lien Exemple ci-dessus.