Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour à tous,
Voilà, j'ai une application PB10.5 sous windows XP qui attaque une base de données ORACLE 9i.
Je tente d'utiliser APPEON. Mon APPEON semble bien configuré. Je peux ouvrir des datawindows qui remontent bien des données. Executer des procédures stockées à partir de datawindows.
Hélas, je n'arrive pas à faire appel à des procédures stockées dans le code PB. Le message remonte par ORACLE est ora-06550 (provlème de paramètres).
En effet, lorsque je mets une trace ORACLE, l'appel à ma procédure stockée est fait avec un paramètre(:1) alors qu'elle n'en possède pas.
Merci d'avance pour votre aide.
Lolo1367
Hors ligne
salut, comment tu lances ta procédure stockée ?
donnes un bout d'appel...
Hors ligne
Voici mon bout de code
string ls_sql ls_sql = "EXECUTE PA_MOUVEMENT.Ajouter()" EXECUTE IMMEDIATE ls_sql USING SQLCA ; IF SQLCA.sqlcode <> 0 then RETURN Failure END IF
Merci
Hors ligne
Bonsoir,
Et en utilisant le DECLARE/EXECUTE classique, ça ne marche pas?
DECLARE Ajouter PROCEDURE FOR PA_MOUVEMENT.Ajouter() USING SQLCA; EXECUTE Ajouter; IF SQLCA.sqlcode <> 0 then RETURN Failure END IF
PS: et sur PBadonf
Hors ligne
string ls_sql ls_sql = "EXECUTE PA_MOUVEMENT.Ajouter()" EXECUTE IMMEDIATE :ls_sql USING SQLCA ; IF SQLCA.sqlcode <> 0 then RETURN Failure END IF
il manque les : apres le immediate
il faut aussi mettre autocommit à true
il n'y a pas de parametres pour ta proc ?
au fait tu es sure que c'est comme ca ? -- >
ls_sql = "EXECUTE PA_MOUVEMENT.Ajouter()"
sous sybase, on fait plutot
ls_sql = "EXECUTE PA_MOUVEMENT.Ajouter"
Hors ligne
pour info, sous appeon,
lorsque tu utilises un execute immediate...
tu ne peux pas l'utiliser de cette facon :
execute "pr_pb_adonf 'coucou'" using sqlca ;
il faut faire comme ceci :
string ls_sql ls_sql = "pr_pb_adonf 'coucou'" execute immediate :ls_sql using sqlca;
Hors ligne
Bonjour,
Cela ne fonctionne toujours pas. Je travaille sous une base ORACLE 9i.
string ls_sql
ls_sql = "EXECUTE pa_chantier.AjouterNew()"
EXECUTE IMMEDIATE :ls_sql USING gnv_app.inv_transaction;
messagebox ("sql erreur",string(gnv_app.inv_transaction.sqlcode))
messagebox ("sql text",string(gnv_app.inv_transaction.sqlerrtext))
messagebox ("sql dbcode",string(gnv_app.inv_transaction.sqldbcode))
J'ai comme code retour sqlcode = -1
L'erreur remontée est
ORA-06650 : Ligne 1, colonne 7 :
PLS-00306 : numéro ou type d'arguments erronés dans l'appel de AJOUTERNEW
ORA-06650 : Ligne 1, colonne 7 :
PS/SQL : Statement ingored
En effet lorsqu'on espoinne la trace oracle, APPEON passe un paramètre :
EXECUTE pa_chantier.AjouterNew(:1)
Avez-vous une idée ? Cela ne viendrait-il pas de JDBC ?
Merci par avance
Hors ligne
tu as essayé
ls_sql = "EXECUTE pa_chantier.AjouterNew"
sans les () ?
sinon, tu passes par le declare de la procedure stockée. et ca marche à tous les coups.
Hors ligne
Oui, j'ai essayé sans les parenthèses. Les deux fonctionnent coté PB.
J'ai également essayé en déclarant la procedure cela marche coté PB mais cela ne marche pas pour la même raison coté APPEON
(ce que je ne peux pas faire pour porter mon appli car tout est dynamique, tu as rencontré à priori le même problème).
Lolo1367
Hors ligne
normalement, une simple procedure comme la tienne fonctionne.
tu as essayé avec d'autres procedures ? genre, une procedure stockée qui te ramene un enregistrement. avec un nom tout simple, et
sans le point pa_chantier.AjouterNew .
sinon, tu passes par ma methode.
tu crees une procedure stockée qui lancera dynamiquement l'autre procedure.
Hors ligne
En fait, tu avais raison, ce qui semble génant c'est la fait que la procédure soit dans un package. Si je créée la procédure en direct cela fonctionne.
As-tu une idée ?
Merci
Hors ligne
peut etre ca ?
Placing the stored procedure declaration syntax in a statement block that may not be executed at runtime is unsupported. In PowerBuilder, stored procedure declaration syntax is treated the same way as variable declaration, so the syntax will not be skipped although the statement block is not executed. However, in the Web application, the syntax may be skipped and cause errors.
Hors ligne
en tout cas, si tu as d'autres questions sur appeon et autres, n'hesites pas. ca peut faire avancer le schmilblick.
Hors ligne
Pages: 1