Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour, quelqu'un a deja rencontré ce probleme ?
et comment regler ce beans ?
voila ma procedure sous sybase.
elle est censée lancer dynamiquement d'autres procedures.
Create Proc dbo.pc_appeon_execute ( @as_variable varchar(1500) = null ) As Begin /********************************************************** *********************************************************/ /* lance dynamiquement une procedure depuis appeon SKA 3/1/07 */ if @as_variable is null return exec (@as_variable) return end
depuis pb :
string ls_proc ls_proc = "pi_laboratoire 'toyn', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL" DECLARE proc_pc_appeon_execute PROCEDURE FOR pc_appeon_execute @as_variable = :ls_proc; EXECUTE proc_pc_appeon_execute; close proc_pc_appeon_execute;
le message d'erreur apparait apres le close de la procedure...
Hors ligne
Salut
Utilise un "using sqlca;" et recupere le code retour de chaque etape (execute & close)
Hors ligne
Il ne manque pas un FETCH après l'execute ??
Hors ligne
le using sqlca est par defaut.
pas de fetch, vu que cette proc ne retourne rien.elle permet juste d'executer d'autres procs.
mais j'avais deja essayé et cela ne change en rien.
apres le execute, j'ai les bonnes valeurs de retour, mais apres le close... j'ai ce message. et un sqlcode = -1
Hors ligne
wazou1812 a écrit:
Il ne manque pas un FETCH après l'execute ??
Non si tu ne recuperes pas d'argument en sortie
Hors ligne
le but n'etant pas d'utiliser ce bout de code , car sous appeon, le null est traduit en variable "NULL".
string ls_proc ls_proc = "pi_laboratoire 'toyn', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL" execute immediate :ls_proc using sqlca;
Hors ligne
pick ouic a écrit:
le using sqlca est par defaut.
c'est pour la suite ... SQLErrText & SQLDBCode
pick ouic a écrit:
apres le execute, j'ai les bonnes valeurs de retour, mais apres le close... j'ai ce message. et un sqlcode = -1
et les SQLErrText & SQLDBCode ? et apres l'execute ?
Hors ligne
PowerBuilder Help a écrit:
If a database stored procedure has output parameters, it must be closed when processing is complete.
Si ta procédure stockée ne retourne rien alors pourquoi faire un close?
Hors ligne
JCZ a écrit:
pick ouic a écrit:
le using sqlca est par defaut.
c'est pour la suite ... SQLErrText & SQLDBCode
pick ouic a écrit:
apres le execute, j'ai les bonnes valeurs de retour, mais apres le close... j'ai ce message. et un sqlcode = -1
et les SQLErrText & SQLDBCode ? et apres l'execute ?
les valeurs de retour changent... les bonnes valeurs sont affichés apres l'execute...
mais apres le close, ca part en "procedure has not been executed..."
Nephtis a écrit:
PowerBuilder Help a écrit:
If a database stored procedure has output parameters, it must be closed when processing is complete.
Si ta procédure stockée ne retourne rien alors pourquoi faire un close?
c'est par habitude...
mais, peut-on ne pas faire le close d'une proc ?
Hors ligne
pick ouic a écrit:
mais, peut-on ne pas faire le close d'une proc ?
Yes
Hors ligne
pick ouic a écrit:
Nephtis a écrit:
PowerBuilder Help a écrit:
If a database stored procedure has output parameters, it must be closed when processing is complete.
Si ta procédure stockée ne retourne rien alors pourquoi faire un close?
c'est par habitude...
mais, peut-on ne pas faire le close d'une proc ?
Moi par habitude (bonne ou mauvaise ) je n'ai jamais fait de close (peut être aussi parce que je ne savais pas que cette commande existait )
Hors ligne
pick ouic a écrit:
le message d'erreur apparait apres le close de la procedure...
Et si on pouvait l'avoir ce message d'erreurs, ça serait mieux
Hors ligne
shahin a écrit:
pick ouic a écrit:
le message d'erreur apparait apres le close de la procedure...
Et si on pouvait l'avoir ce message d'erreurs, ça serait mieux
Le message d'erreur c'est pas le titre du post?
Hors ligne
Ce ne serait pas lié au fait que tu forces @as_variable à null dans la déclaration de ta procédure?
Hors ligne
Mais sans le close ça marche?
Hors ligne
plus ou moins...
ca me crée une transaction de plus. le but etant de fermer cette nouvelle transaction qui n'a pas lieu.
Hors ligne
voyons !
Cela explose avant avec comme message :'Le champs nom n'est pas renseigné !'
Hors ligne
JCZ a écrit:
voyons !
Cela explose avant avec comme message :'Le champs nom n'est pas renseigné !'
c'est normal ca !
c'est le message intercepté... un controle dans la procédure stockée...
ceci n'explique pas le bug. voyons !
Hors ligne
ey si la proc ne se plante pas -> tu n'as pas de probleme alors ?
Hors ligne
si apres, ca fait un effet kiss kool...
je me retrouve confronté avec une nouvelle transaction...
Hors ligne
en fait, jcz, tu n'as pas trop tort sur un point...
lorsque toutes les données sont remplis comme il faut, il n'y a pas d'erreur.(dans le sens ou cela ne genere pas de transaction)
par contre lorsqu'il y a un retour erreur comme dans ce cas...
voici un bout de code de la procédure appelé par ma proc :
Create Proc dbo.pi_laboratoire ( @id_laboratoire varchar(5), @nom varchar(30), @raison_sociale_labo varchar(60), @service varchar(30), @code_postal varchar(5), @rue1 varchar(30), @rue2 varchar(30), @ville varchar(25), @telephone varchar(16), @fax varchar(16) ) As Begin /********************************************************** *Procedure Name: pi_laboratoire *********************************************************/ IF @id_laboratoire IS NULL begin RAISERROR 150001 '' return end IF @nom IS NULL begin RAISERROR 150002 '' return end
si vous voyez une solution au niveau de ma proc principale d'appel
Hors ligne
2 solutions :
. soit tu modifies la proc pour avoir une valeur en out pour les erreurs gerées que tu veux recuperer
. soit tu fais le close uniquement si sqlcode = 0 après l'execute
Hors ligne
je viens de comprendre un peu...
en fait, c'est le raiserror qui provoque cela.
le raiserror de la procédure stockée appelé affiche le message d'erreur ou de controle,
et s'enchaine ensuite l'erreur.
alors, comment faire pour eviter cette erreur, apres provocation d'un raiserror ?
Hors ligne