Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 30-05-2006 08:22:20

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Les instructions SQL

Dans un programme PowerScript, on peut intégrer des requêtes SQL, on parle de requêtes encapsulées (Embedded SQL). Une variable PowerScript utilisée dans une requête doit être précédée par « : ». La requête doit être terminée par un « ; ».
Ex : insert into employe (salarie) values(:sal_var);

PowerBuilder supporte l’utilisation de variables indicatrices dans les requêtes Select Into et Fetch Into. Une variable indicatrice retourne :
    · 0 si la valeur retournée par la requête est non NULL,
    · -1 si la valeur retournée par la requête est NULL,
    · +1 s’il y a un problème de conversion entre le type de la colonne et le type de la variable.

Une variable indicatrice est placée après la variable, séparée par un espace.
Ex : Select nom into :nom_cli  indnom_cli from client where id_cli=10;

Il est conseillé de tester l’echec ou le succés d’une requête grâce à l’utilisation de la fonction SQLCODE. On l’uitlise comme suit : <objet de transaction>.SQLCODE. Cette fonction retourne :

    · 0 si succés,
    · 100 si succés mais la requête ne retourne pas de valeur,
    · -1 si erreur.

Ex : If SQLCA.SQLCODE = -1 then
    MessageBox(‘SQL erreur’,SQLCA.SQLErrText)
    End If

Dans un script, on peut utiliser les requêtes standards : Select Into, Insert, Update et Delete, les curseurs et les procédures stockées. Pour les deux derniers, il faut d’abord les déclarer pour pouvoir les utiliser. On les déclare comme des variables globales, d’instance, partagées ou locales dans les painters des fenêtre, objet utilisateur, menu et PowerScript.

Les instructions SQL :
· Select Into {using objet de transaction}
On précise le nom de l’objet de transaction s’il est différent de celui pris par défaut SQLCA. Rappelons que l’objet de transaction contient toutes les informations nécessaire pour identifier la base de données sur laquelle on travaille.

· Update {using objet de transaction}

· Update Where current of <nom_curseur>
cette commande est utilisée avec un curseur. Elle permet de mettre à jour le tuple correspondant à l’enregistrement ramené par le Fetch du curseur. La spécification de l’objet de transaction se fait lors de la déclaration du curseur.

· Insert into {using objet de transaction}

· Delete from {using objet de transaction}

· Delete Where current of <nom_curseur>

· Declare <nom_curseur> Cursor For <ordre Select> {using objet de transaction}
Rappelons qu’un curseur peut être déclaré comme une variable globale, d’instance, partagée ou locale.

· Declare <nom_procédure> Procedure For
<nom procédure stockée>
@param1=valeur1, @param2=valeur2,...
{using objet de transaction}

param et valeur représentent les noms des paramètres de la procédure et les valeurs qu’on leur passe (valeur peut être une variable qui sera renseignée dans un script avant l’appel de la fonction) .

· Open <nom_curseur> permet d’ouvrir le curseur.

· Fetch <nom_curseur> into <variables>.
nom_curseur est le nom du curseur tel qu’on l’a défini dans la section Declare et <Variables> sont des variables receptrices PowerScript.

· Close <nom_curseur> permet de fermer le curseur.

· Execute <nom_procédure> permet d’exécuter la procédure stockée. <nom_procédure> est le nom de la procédure tel qu’on l’a défini dans la section Declare.

· Close <nom_procedure> permet d’arrêter le traitement de de la procédure. Cette commande doit être précédée par la commande Execute. Elle n’est obligatoire que si la procédure stocke des valeurs.

· Connect {using objet de transaction}
Cette commande permet de faire la connexion avec la base de données. Elle doit être exécutée avant d’ exécucter des requêtes SQL. En général, elle est exécutée en debut d’application.

· Disconnect {using objet de transaction} permet de se deconnecter de la base de données.

· Commit {using objet de transaction}

· Rollback {using objet de transaction}

· Requêtes SQL dynamiques : supposons qu’on ne connaît pas tous les paramètres d’une requête au moment de la compilation. Ces paramètres seront renseignés lors de l’exécution de l’application. L’uitilisation des requêtes dynamiques reste rare, ll existe des commandes spécifiques pour les réaliser. Les variables globales prédéfinies SQLSA et SQLDA de types respectifs DynamicStagingArea et DynamicDescrptionArea sont utilisées dans ce but.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#2 30-05-2006 08:32:52

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: Les instructions SQL

Encapsulation dans le Power Script.

Le PowerScript, langage de PowerBuilder, inclut un ensemble de fonctionnalités SQL.
Ces fonctionnalités permettent:
-     d’utiliser des ordres du standard SQL pour accéder aux données de la base dans les scripts
-     de bénéficier des fonctionnalités délivrées par l’objet transaction de PowerBuilder
-     d’utiliser les Procédures Stockées du SGBDR en déclenchant leur exécution au niveau de l’application frontale.
Pourquoi utiliser le SQL encapsulé?

Le SQL encapsulé n’est pas à privilégier dans les applications PowerBuilder, et le moyen le plus efficace car optimisé, pour accéder aux données est la data window.
Cependant, il peut être nécessaire d’avoir recours directement à des ordres SQL :
- contraintes de présentation, cas relativement exceptionnel,
- instructions de mise à jour  impromptues et/ou enchaînées,
- déclenchement de procédures stockées au niveau du moteur SQL.


Les contraintes de syntaxe du SQL encapsulé.
Les commandes SQL associées au PowerScript doivent :
- commencer par un verbe SQL répertorié,
- se terminer par le caractère ;
- ne pas comporter de caractère de continuation (& en PowerScript).

D’autre part, les ordres SQL sont toujours associés à un objet Transaction.
Par défaut, il s’agira de SQLCA déjà évoqué dans un chapitre précédent.
Cependant, pour utiliser un objet de transaction spécifique à l’application, il sera nécessaire d’utiliser la clause using.

Exemple:


Connect using transact1;
......................................
Delete from client where Id_cli = 12632  using transact1;
........................................


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22