procédure stockée sous Orcale8.1 [PL/SQL] - SQL/NoSQL - Programmation
Marsh Posté le 20-04-2002 à 14:28:30
c du pl/sql
create procedure p1 is
variable1 cat%rowtype;
begin
select * into variable1 from cat;
end;
Aprés tu fais execute p1
Marsh Posté le 24-04-2002 à 11:42:50
Cette solution permet de recupérer la valeur d'un champ à l'intérieur de la procédure, mais pas à l'extérieur.
J'aimerais pouvoir lancé une procédure stockée à partir d'une servlet, que cette procédure ne retourne un résultat, et que la servlet puisse afficher les lignes sélectionnées.
Y'a donc pas moyen qu'une procédure retourne un 'rowset' (comme quand on lance une requete SELECT) ?
Marsh Posté le 24-04-2002 à 15:02:19
nan, t'es obligé de boucler mais ca pue.
Utilises plutôt un preparedStatement dans ta servlet.
Marsh Posté le 24-04-2002 à 15:36:54
c ce que je fais, j'ai un callableStatement (c presque pareil, ca extends de preparedStatement), comme ceci :
CallableStatement cs=connection.prepareCall("{CALL MyProc}" );
return (cs.executeQuery()); // qui retourne un ResultSet
mais mon pb n'est pas ds le java, c ds le code de la procedure.
Comment faut-il faire pour qu'une procédure retourne qqch, (genre un cursor) ?
Marsh Posté le 02-05-2002 à 16:01:15
ca passe, mais dès que j'essaie de mettre du code :
create procedure p1 is
begin
select * from cat;
end;
(par exemple), oracle me répond :
procedure créée mais avec des erreurs de compilation.
PS : Il faut bien utiliser EXECUTE p1; pour lancer une procédure ?
[/citation]
c normal parce ke il ya po le droit de faire des ordres select dans une procedure ke select machin into truc
Marsh Posté le 02-05-2002 à 17:45:11
1) par definition une procedure ne retourne rien du tout
2) une fonction retourne quelque chose
3) essaie ceci :
FUNCTION f1 RETURN cat%rowtype
IS
variable1 cat%rowtype;
begin
select * into variable1 from cat;
RETURN variable1;
end;
n'oublie pas le bloc d'exception non plus
Marsh Posté le 18-04-2002 à 15:31:42
J'essaie desespéremment de créer une procédure stockée...
Quand je mets :
create procedure p1 is
begin
null;
end;
ca passe, mais dès que j'essaie de mettre du code :
create procedure p1 is
begin
select * from cat;
end;
(par exemple), oracle me répond :
procedure créée mais avec des erreurs de compilation.
PS : Il faut bien utiliser EXECUTE p1; pour lancer une procédure ?