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 06-02-2007 09:14:31

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

[RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

Bonjour,
  Sous PB 10.5 avec une base Oracle 10.1.0.2 gros soucis avec les procédures stockées. Impossible d'en faire fonctionner une seule.
La connection avec la base Oracle se fait avec JDBC.

Voici ma procédure stockée

Code: mssql

CREATE OR REPLACE PROCEDURE STEMATCH.proc_add_to_invest IS
toto NUMBER;
BEGIN
 
   SELECT invest_sn INTO toto FROM tb_investigation WHERE invest_sn = 312;

END proc_add_to_invest;
/

et voici mon appel dans powerbuilder, je me suis basé sur un article et une demande de mreminiac trouvée dans le forum

Code: pb

String monSql;
monSql = "EXEC STEMATCH.proc_add_to_invest";
DECLARE maProc DYNAMIC PROCEDURE FOR SQLSA;
PREPARE SQLSA   FROM :monSql;
EXECUTE DYNAMIC MaProc;

et à chaque fois j'ai une erreur SQLState = 42000 et SQLcode = 900. Autrement dit "Syntax Error" d'après notre bible d'erreur Oracle.

je ne vois pas où... j'ai changé la requete pour ceci avec le même effet

Code: mssql

CREATE OR REPLACE PROCEDURE STEMATCH.proc_add_to_invest IS

BEGIN
 
  COMMIT;  -- puis sans le commit avec uniquement
                 -- DBMS_output.line( 'Coucou'); 

END proc_add_to_invest;
/

merci encore pour l'aide

Hors ligne

 

#2 06-02-2007 09:32:57

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

Tu utilise la version professionnal ou enterprise de PB ?


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

Hors ligne

 

#3 06-02-2007 09:34:28

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

enterprise dire que je pensais avoir été complet

Hors ligne

 

#4 06-02-2007 09:41:48

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

hello,

tu as le détail de ton message d'erreur ?  le 42000...  apparement, tu peux avoir plusieurs type d'erreur...
et le message te decrirait le probleme...

a+++


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

Hors ligne

 

#5 06-02-2007 09:55:17

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

le message issu de SQLCA (sqlerrtext) est "invalid sql statement" (code erreur 900).

Hors ligne

 

#6 06-02-2007 10:05:14

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

la proc fonctionne depuis Oracle ? ou Sql Toad ? un truc comme ca...
tu as mis les droits d'accès pour tous pour ta proc ?

si oui...

alors, essayes de faire l'appel de la proc depuis powerbuilder, en version normale, pas en dynamic.
tu dois envoyer un parametre ?

a++


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

Hors ligne

 

#7 06-02-2007 12:27:05

lemaneg  
Membre
Lieu: Le havre
Date d'inscription: 25-01-2007
Messages: 4
Pépites: 4,122
Banque: 464,298,898,444

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

Essaye de déclarer un paramètre (qui ne sert à rien) dans ta procédure, je crois avoir déja eu un problème de ce genre avec PB8.

Hors ligne

 

#8 06-02-2007 12:57:18

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

effectivement depuis TOAD... depuis SQL plus ca marche aussi très bien cette procédure (vu ce qu'il en reste )

cette procédure doit avoir des paramètres c'est pour cela que je l'appelle en dynamique.


un paramètre dans l'appel de la procédure ? et j'en fais quoi de ce paramètre ?

Hors ligne

 

#9 06-02-2007 13:07:11

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

ce que je veux dire, tu declares comme ceci depuis pb :




Code: pb

boolean lb_autocommit

lb_autocommit = sqlca.autocommit

sqlca.autocommit = false

DECLARE proc_toto PROCEDURE FOR STEMATCH.proc_add_to_invest 
@ton_parametre = :valeur du parametre;
EXECUTE proc_toto ;

IF SQLCA.sqlcode = 0 THEN
    FETCH proc_toto  INTO :li_valeur_recupere;
END IF

CLOSE proc_toto ;

sqlca.autcommit = lb_autocommit




Au fait, c'est quoi STEMATCH.  ?


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

Hors ligne

 

#10 06-02-2007 13:33:25

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

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

pick ouic a écrit:

Au fait, c'est quoi STEMATCH.  ?

au hasard, le nom d'un package ??


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

Hors ligne

 

#11 06-02-2007 13:48:02

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

je pense aussi ^^

Hors ligne

 

#12 06-02-2007 14:10:19

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

oui c'est un package, de toute manière on a mis des alias partout pour ne pas le trimbaler

bon ca passe à mon grand étonnement sans la variable ! Merci encore pour ce Grand premier pas...
mais avec la variable j'ai le droit dans PB à une erreur par le compilateur
"Database SQL Error -201 : A Syntax Error has occured." le pointeur de PB sur le @ ?

Hors ligne

 

#13 06-02-2007 14:13:31

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

aubierf a écrit:

oui c'est un package, de toute manière on a mis des alias partout pour ne pas le trimbaler

bon ca passe à mon grand étonnement sans la variable ! Merci encore pour ce Grand premier pas...
mais avec la variable j'ai le droit dans PB à une erreur par le compilateur
"Database SQL Error -201 : A Syntax Error has occured." le pointeur de PB sur le @ ?

si ta variable s'appelle @toto dans ta proc,
il faut que tu l'appelles de la meme facon depuis pb :

@toto= :valeur du parametre;


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

Hors ligne

 

#14 06-02-2007 14:56:07

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

c'est bien ce que je fais !! et ca marche bien !!!

dire que je l'avais fait hier mais j'ai eu peur de l'erreur PB et j'ai tenté une autre approche (par le dynamique)

Hors ligne

 

#15 06-02-2007 14:58:25

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

aubierf a écrit:

c'est bien ce que je fais !! et ca marche bien !!!

dire que je l'avais fait hier mais j'ai eu peur de l'erreur PB et j'ai tenté une autre approche (par le dynamique)

Finalement, c'est résolu ?  (je commence à m'y perdre moi...)


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

Hors ligne

 

#16 06-02-2007 15:04:50

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

on dirait oui vas y pick fais toi plaisir :D

Hors ligne

 

#17 06-02-2007 15:15:58

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

disons que j'ai tout de même une affreuse erreur PB même si j'avoue que ca marche  

Hors ligne

 

#18 06-02-2007 15:18:28

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

c'est quoi l'erreur ?
c'est lié suite à l'appel de ta proc ?
ou c'est autre chose ?

il y a une image de ton erreur ?


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

Hors ligne

 

#19 06-02-2007 15:46:45

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

pick ouic a écrit:

ce que je veux dire, tu declares comme ceci depuis pb :




Code: pb

boolean lb_autocommit

lb_autocommit = sqlca.autocommit

sqlca.autocommit = false

DECLARE proc_toto PROCEDURE FOR STEMATCH.proc_add_to_invest 
@ton_parametre = :valeur du parametre;
EXECUTE proc_toto ;

IF SQLCA.sqlcode = 0 THEN
    FETCH proc_toto  INTO :li_valeur_recupere;
END IF

CLOSE proc_toto ;

sqlca.autcommit = lb_autocommit




Au fait, c'est quoi STEMATCH.  ?

bien sur mais comment je peux t'envoyer une image ? Merci encore pour le temps passé sur mon (mes) problème(s) )  _:

Avec ton code contenant la variable, le curseur de PB s'arrete au @ de @toto= :valeur du parametre;
et j'ai le message "Database SQL Error -201 : A Syntax Error has occured." et pourtant j'ai bien appellé du même nom mon paramètre dans la procédure stockée.

Hors ligne

 

#20 06-02-2007 16:00:46

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

aubierf a écrit:

enterprise dire que je pensais avoir été complet

Alors utilise le driver natif, au lieu de jdbc.
Probablement pas la source de ton ereur, masi ça élimine une erreur possible


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

Hors ligne

 

#21 06-02-2007 16:10:13

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

pick ouic a écrit:

aubierf a écrit:

oui c'est un package, de toute manière on a mis des alias partout pour ne pas le trimbaler

bon ca passe à mon grand étonnement sans la variable ! Merci encore pour ce Grand premier pas...
mais avec la variable j'ai le droit dans PB à une erreur par le compilateur
"Database SQL Error -201 : A Syntax Error has occured." le pointeur de PB sur le @ ?

si ta variable s'appelle @toto dans ta proc,
il faut que tu l'appelles de la meme facon depuis pb :

@toto= :valeur du parametre;

si c'est du output...

Code: pb

DECLARE d_toto PROCEDURE FOR sp_toto 
@toto = :li_result  OUTPUT
USING sqlca;

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

Hors ligne

 

#22 07-02-2007 08:32:19

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

j'ai bien tenté avec le driver natif ( en fait mes premiers tests étaient fait avec le natif et on m'a conseillé le jdbc) et aussi de mettre OUTPUT ou INPUT à la fin de ma ligne "@toto = :li_var" mais sans succès. Toujours la même erreur sur le "@"....

j'ai retenté de changer la commande de mettre le paramètre entre parenthèse, changer le nom de la variable, enlevé le "@" et si le compilateur passe malheureusement j'ai à nouveau l'impossibilité d'exécuter ma procédure stockée.

Hors ligne

 

#23 07-02-2007 08:35:25

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

ce serait un BUG lié avec ta version de pb10.5 ?

Si quelqu'un peut confirmer cela ?  merci d'avance.


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

Hors ligne

 

#24 07-02-2007 09:20:57

aubierf  
Membre Geek
Lieu: Genève
Date d'inscription: 14-12-2006
Messages: 32
Pépites: 114
Banque: 0

Re: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

je viens de tester sur la PB 8.0.3, la 10.0 et la 10.5 et à chaque fois j'ai une erreur à la compil

C'est bien ca qu'il faut écrire ????

Code: mssql

DECLARE proc_toto PROCEDURE FOR proc_add_to_invest

@maVar = 312;

EXECUTE proc_toto ;

CLOSE proc_toto;

Hors ligne

 

#25 07-02-2007 09:34:19

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: [RESOLU] Procédure stockée avec Oracle erreur SQLState = 42000

aubierf a écrit:

je viens de tester sur la PB 8.0.3, la 10.0 et la 10.5 et à chaque fois j'ai une erreur à la compil

C'est bien ca qu'il faut écrire ????

Code: mssql

DECLARE proc_toto PROCEDURE FOR proc_add_to_invest

@maVar = 312;

EXECUTE proc_toto ;

CLOSE proc_toto;

oui, c'est bien ca !
@maVar est bien nommé comme ca dans ta proc ?

délireeeeeeeee


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