Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/10/2007, 16h49   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 11
Points : 11
Par défaut Appel procédure stockée

Bonjour,

J'ai crée des procédures stockée via PL/SQL
et quand je veux les appeler sous unix j'ai un message d'erreur. Pourriez vous m'aider à savoir ce qui cloche:

Quand je tape :
SQL> ecex Procedure_creer();

ça me genere l'erreur suivante:
BEGIN essai(); END;

*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'ESSAI'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Merci D'avance
c.betty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 16h58   #2
Membre éclairé
 
Inscription : novembre 2002
Messages : 533
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 533
Points : 359
Points : 359
par exemple :

Code :
1
2
execute myprocedure;
execute myprocedure (myparam1,Myparam2);
ou encore déclaré dans un bloc anonyme PL

Code :
1
2
3
4
DECLARE
BEGIN
MyProcedure;
END;
__________________
PpPool
PpPool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h05   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 11
Points : 11
Merci pour ta réponse mais c'est ce que j'ai fait mais ça ne marche pas :

SQL> execute procedure();
BEGIN procedure(); END;

*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'procedure'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Voila
c.betty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h16   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Citation:
Envoyé par c.betty Voir le message
PLS-00306: wrong number or types of arguments in call to 'procedure'
Vérifie tes paramètres...

Si tu n'en as pas, fais:

Code :
SQL> execute procedure;
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h24   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 11
Points : 11
J'ai toujours une erreur :

SQL> begin
2 execute essai();
3 end;
4 /
execute essai();
*
ERROR at line 2:
ORA-06550: line 2, column 9:
PLS-00103: Encountered the symbol "ESSAI" when expecting one of the following:
:= . ( @ % ; immediate
The symbol ":=" was substituted for "ESSAI" to continue.

Je ne comprends plus rien car la procédure a été testé via pl/sql et elle ne comporte aucune erreur
c.betty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h27   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Il ne faut pas mettre execute dans un bloc PL
Relis la réponse de PpPool
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h28   #7
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
soit tu fais :
Code :
1
2
3
4
5
 
begin
essai;
end;
/
ou alors

Mais pas un mélange !!!
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h32   #8
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 11
Points : 11
Ne t'énerve pas

Voila ma procedure:
CREATE OR REPLACE PROCEDURE ESSAI(
p_ErrMess OUT VARCHAR2,
p_Result OUT NUMBER
)
IS
BEGIN
INSERT INTO tab_new
SELECT DISTINCT bp.id
FROM dailyds, billingbp
WHERE ds.traffic= bp.id
AND bp.blp= 'R'
AND NOT EXISTS (SELECT 'ok'
FROM tab_trafictt
WHERE bp.id = tt.fk_blp );
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
p_ErrMess:= SQLERRM;
p_Result:=SQLCODE;
DBMS_OUTPUT.PUT_LINE('INTERCEPTE CODE ERREUR :' || SQLCODE || 'MESSAGE' || SQLERRM) ;
END ESSAI;

Je l'appele avec SQLPLUS comme suit:
SQL> begin
2 essai();
3 end;

essai();
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00306: wrong number or types of arguments in call to 'ESSAI'
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
c.betty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h46   #9
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
Pour tester une procédure avec des paramètres out, il faut passer par un PL

Tu fais
Code :
1
2
3
4
5
6
7
 
declare
err_msg varchar2(25); -- à toi de déterminer la bonne taille
res number;
begin
essai(err_msg, res);
end;
Il faut toujours passer les variables dans une procédure quand elles existent, que ce soit en OUT, ou en IN, sauf dans le dernier cas, si une valeur par défaut a été prévu.

D'ailleurs, si tu avais lu attentivement le message d'erreur, tu aurais pu deviner d'où venais ton erreur :

ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00306: wrong number or types of arguments in call to 'ESSAI'
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h50   #10
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 11
Points : 11
Merci
ça marche
Tu as raison , Si j'avais lu j'aurais su LOL.
Mais bon je travaille sur plusieurs taches en même temps.

MERci
c.betty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h33.


 
 
 
 
Partenaires

Hébergement Web