Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

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 09-06-2010 09:46:16

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Procédures Stockées : comment ca marche ?

Bonjour à tous,

Je reviens faire un petit tour par ici (je me fais de plus en plus absent, bouhhhh c'est pas bien !!) car j'ai de nouveau besoin de votre aide.

Nous venons de découvrir avec nos collègues les procédures stockées.
Le seul hic est qu'on ne sait pas comment ca fonctionne.

On utilise PB 6.5 et Informix 7.

Sous dbaccess, on arrive à créer une procédure...et à partir de là...trou noir.

Nous avons essayer de la créer dans le painter de PB mais ca ne fonctionne pas.

Quelqu'un aurait-il des infos sur les procédures stockées pour nous aider ?

Merci beaucoup pour votre aide

Hors ligne

 

#2 09-06-2010 10:02:41

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

Bonjour, une fois la proc créée, dans PB tu peux alimenter un DW avec ou la déclarer dans un script pour l'appeler.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 09-06-2010 10:06:16

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

oui et ?

En fait mes questions sont :
     * comment fait-on pour déclarer une procédure dans l'appli ?
     * comment la déclarer ?

Désolé mais on n'y connait vraiment rien du tout.

J'ai fait des recherches sur le net et le forum...mais je n'ai rien trouvé qui aurait pu m'éclairer "simplement"

Hors ligne

 

#4 09-06-2010 10:41:59

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

Sans vouloir te froisser, la première chose à consulter est...  l'aide PB. (je t'épargne le smiley F1 )

Bon, j'ai pas la version 6.5 donc je ne sais pas si c'est pareil que :

Informix DECLARE and EXECUTE

PowerBuilder requires a declarative statement to identify the database stored procedure that is being used and specify a logical name. The logical name is used to reference the procedure in subsequent SQL statements. The general syntax for declaring a procedure is:

DECLARE logical_procedure_name PROCEDURE FOR
    Informix_procedure_name
    ({:arg1,:arg2 , ...})
    {USING transaction_object};

where logical_procedure_name can be any valid PowerScript identifier and Informix_procedure_name is the name of the stored procedure in the INFORMIX database. The parentheses after Informix_procedure_name are required even if the procedure has no parameters.

Creating a stored procedure

The default SQL terminator character for the Database painter is a semicolon (;). Informix also uses a semicolon in its stored procedure syntax. Therefore, to create a stored procedure in the Database painter, you must change the SQL terminator character to something other than a semicolon, such as a backquote (`).

To change the Database painter's SQL terminator character, type the character you want in the SQL Terminator Character box in the Database Preferences dialog box.

The parameter references can take the form of any valid parameter string that INFORMIX accepts. PowerBuilder does not inspect the parameter list format except for purposes of variable substitution. The USING clause is required only if you are using a transaction object other than the default transaction object (SQLCA).

Example

Assume a stored procedure proc1 is defined as:

CREATE PROCEDURE proc1 AS

SELECT emp_name FROM employee

To declare that procedure for processing within PowerBuilder, enter:

DECLARE emp_proc PROCEDURE FOR proc1;

Note that this declaration is a nonexecutable statement, just like a cursor declaration. Where cursors have an OPEN statement, procedures have an EXECUTE statement.

When an EXECUTE statement is executed, the procedure is invoked. The EXECUTE refers to the logical procedure name:

EXECUTE emp_proc;

Issuing EXECUTE statements

Use PowerBuilder embedded SQL syntax when you enter an embedded EXECUTE statement in a script; do not enter the PROCEDURE keyword. Use this syntax:

EXECUTE procedure_name ;

You specify the EXECUTE statement the same way regardless of whether a stored procedure takes arguments. The arguments used in the DECLARE statement get passed automatically, without your having to state them in the EXECUTE statement.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 09-06-2010 11:14:59

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Procédures Stockées : comment ca marche ?

PB 6.5, c'est une très vieille version. Vous utilisez quelle version de Windows ? 98 ou NT4 ?
Pensez à migrer.

Pour un select, tu crée ta datawindow, à partir de la proc stock.
Mais pour les insert, update, delete, le support des procs stock n'est pas natif, il faut utiliser le sqlPreview de la datawindow


never let people work on more than one thing at once.

Hors ligne

 

#6 09-06-2010 11:56:57

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

@ erasorz : j'avais déjà regardé l'aide de PB. Mais quand je veux créer ma procédure dans le painter, ca me met qu'il y a une erreur : SQL 201 : a syntax error as occured alors que ma procédure est toute bete (create procedure ste as select codes from societe)

@shahin : tu prêches un convaincu concernant la vestuté de cette version...mais le boss n'est visiblement pas d'accord pour qu'on migre...ou alors il faudrait lui prouver que les applis PB 6.5 et PB12 peuvent cohabiter (une histoire de runtime...ou du genre)

On manque cruellement de formation sur PB...si seulement on pouvait avoir des formations...:'(

Hors ligne

 

#7 09-06-2010 12:14:04

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

Ah, j'avais pas bien saisi... Tu veux créer la procédure via PB (?)
Quel est l'intéret ? Je ne comprends pas trop

Si c'est le cas, et pour tout autres instructions DDL (create table...), il faut le faire par script avec un EXECUTE IMMEDIATE.

NB :

Sebou a écrit:

On manque cruellement de formation sur PB...si seulement on pouvait avoir des formations...:'(

On ne veut pas vous en payer ou vous n'en trouvez pas ?
Si c'est la 2ème réponse, contactez-moi.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#8 09-06-2010 12:46:24

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

Alors, au risque de passer pour un idiot :
La procédure il faut bien qu'elle soit créée chez les clients ? C'est pour ca que je veux la créer dans l'appli.
(Attention : il se peut très bien que je raconte nawak lol)

Ensuite je ne sais pas comment l'appeler.


Concernant les formations....ca fait 3 ans que j'suis dans la boite, ca fait 3 ans qu'on nous promet une migration et des formations...Qui a dit que le père noël existait ? :-x

Dernière modification par Sebou (09-06-2010 12:53:41)

Hors ligne

 

#9 09-06-2010 13:04:23

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Procédures Stockées : comment ca marche ?

Normalement, une procédure stockée doit être créée et compilée au niveau de la base de donnée,
laquelle est probablement sur un serveur.
Ensuite, depuis PB, tu as différentes manières d'appeler cette procédure:
- Directement comme datasource d'une datawindow
- Par SQL Embedded
- Par SQL dynamique.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#10 09-06-2010 13:08:38

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

donc pour la création c'est ok...mais alors pkoi, dans le painter, quand je crée ma procédure, il me dit qu'il y a une erreur ?

ensuite pour l'appeler, sans passer par une datawindow, il faut faire quoi ?

(merci :x)

Hors ligne

 

#11 09-06-2010 13:11:10

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

Sebou a écrit:

donc pour la création c'est ok...mais alors pkoi, dans le painter, quand je crée ma procédure, il me dit qu'il y a une erreur ?

le painter DW ? Si oui, tu ne peux pas y faire des instructions DDL, uniquement des requêtes.

Sebou a écrit:

ensuite pour l'appeler, sans passer par une datawindow, il faut faire quoi ?

regarde mon post avec l'aide de PB


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#12 09-06-2010 13:14:03

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

le painter SQL, celui ou je peux taper des requetes SQL directement (l'équivalent de DBaccess)

Hors ligne

 

#13 09-06-2010 13:20:18

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Procédures Stockées : comment ca marche ?

Tu n'as pas oublié le ";" final à ta requête de création?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#14 09-06-2010 13:23:31

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

Bah non, voilà ce que je tape :

Code: sql

create procedure ste as select codes from societe;

Hors ligne

 

#15 09-06-2010 13:48:13

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Procédures Stockées : comment ca marche ?

Tu as vérifié que ta procédure n'existe pas déjà? Auquel cas, il faut la dropper au préalable.
Je ne connais pas Informix, mais j'essayerai plutôt la syntaxe suivante:

Code: mssql

CREATE PROCEDURE ste
RETURNING CHAR(20);
DEFINE returncode CHAR(20);
SELECT codes
INTO returncode
FROM societe;
RETURN returncode;
END PROCEDURE;

Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#16 09-06-2010 13:48:15

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

quelle est l'erreur retournée ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#17 09-06-2010 13:49:26

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

foon a écrit:

Tu as vérifié que ta procédure n'existe pas déjà? Auquel cas, il faut la dropper au préalable.
Je ne connais pas Informix, mais j'essayerai plutôt la syntaxe suivante:

Code: sql

CREATE PROCEDURE ste
RETURNING CHAR(20);
DEFINE returncode CHAR(20);
SELECT codes
INTO returncode
FROM societe;
RETURN returncode;
END PROCEDURE;

heu, un RETURN dans une proc, t'es sûr ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#18 09-06-2010 13:51:19

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Procédures Stockées : comment ca marche ?

erasorz a écrit:

heu, un RETURN dans une proc, t'es sûr ?

Oui, c'est curieux, mais c'est ce que j'ai trouvé dans un forum INFORMIX.
Maintenant, n'ayant pas INFORMIX, je n'ai pas pu tester si ce code marche ou non


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#19 09-06-2010 13:55:18

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

L'erreur retournée est la suivante : SQL Error -201 : A syntax error has occured

foon, j'ai essayé ta syntaxe mais pas mieux

j'ai essayé ca aussi mais pas mieux :

Code: sql

CREATE PROCEDURE ste AS 
SELECT codes from societe;
END PROCEDURE;

Line:2
SQL Error - 201 : A syntax error has occured

Si je fais 'continue', ca me met la meme chose avec la ligne 3
(sinon la procedure n'existe pas, ca c'est sur)

Hors ligne

 

#20 09-06-2010 13:55:43

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Procédures Stockées : comment ca marche ?

Pour info, un lien qui peut être utile:
http://publib.boulder.ibm.com/infocente … qls250.htm
Je suppose que ta table "societe" existe bien, et que tu as les droits d'accès et de création de procédures adéquats?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#21 09-06-2010 13:59:35

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

le même syntaxe est-elle acceptée dans ton outil dbaccess ?

en fait, sans vouloir faire le rabat-joie , je ne vois pas la valeur ajoutée de le faire dans PB... (painter ou code)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#22 09-06-2010 14:05:21

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: Procédures Stockées : comment ca marche ?

non la syntaxe n'est pas acceptée dans dbaccess.
en revanche, en dbaccess, la syntaxe suivante est acceptée :

Code: sql

create procedure soci() 
select codes from societe into temp toto;
end procedure            


mais là il y a un autre pb : la table temporaire toto
et si on ne met pas ce "into temp toto", ca veut pas ca met comme erreur qu'on ne peut pas faire de select sans table temporaire.

Sinon @erasorz, je fait de vouloir passer par le painter, c'est juste pour ne pas avoir 36 000 fenetres ouvertes et tt faire dans PB

Hors ligne

 

#23 09-06-2010 14:30:39

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Procédures Stockées : comment ca marche ?

donc ça se résume à une problématique 100% informix, et là je ne peux rien pour toi...


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22