Procedimientos Almacenados

Robinson
30 de Septiembre del 2003
Hola a todos:

estoy creando un procedimiento almacenado en oracle 8i y me tira el siguiente error:

Aviso: Procedimiento creado con errores de compilación.

el SP es:


CREATE OR REPLACE PROCEDURE pp AS
begin
select * from comuna;
end;

Si alguien me puede guiar con esto, ya que estoy tratando de migrar procedimientos almcenados de sql server 7.0 a oracle 8i, les estare eternamente agradecido.

Mamarti
30 de Septiembre del 2003
Verificaste si existe la tabla "comunas" como objeto público o como un objeto del esquema del usuario con el que estás creando el SP????

Robinson
30 de Septiembre del 2003
La tabla esta creada con el usuario system.
Quiza ese es el error?????

malvarez
30 de Septiembre del 2003
Lo que pasa es que no estas almacenando la informacion en una variable, debes tener en cuenta que puedes recuperar mas de un registro

SAludos

nerea
30 de Septiembre del 2003
El procedimiento no es correcto,... a parte de que te falta el INTO, el procedimiento no va a hacer nada, porque no estás haciendo nada con los valores obtenidos.
Si lo que quieres es que te escriba por SQL*Plus el resultado deberías hacer algo así:

CREATE or REPLACE PROCEDURE pp AS
begin
declare
variable varchar2(20);
cursor c1 is select campo from comuna;
begin
open c1;
fetch c1 into variable;
exit when c1%NOTFOUND;
dbms_output.put_line(variable);
end loop;
end;
end;
/


Luego para ejecutarlo por SQL*Plus, tienes que tener en cuenta que debes poner SET SERVEROUTPUT ON.

Si lo que quieres es poder ejecutar este procedimiento y que te devuelva un RecordSet , tienes algunos ejemplos en:
http://www.learnasp.com/learn/oraclerecordsetsado.asp

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q176/0/86.asp&NoWebContent=1

http://www.vbip.com/books/1861001789/chapter_1789_10.asp

Robinson
30 de Septiembre del 2003
gracias....
voy a revisar la información que me enviaste.

Robinson
30 de Septiembre del 2003
Yo de nuevo....

alguien me puede decir porque da el siguiente mensaje de error al tratar de ejecutar el procedimento:

ERROR en línea 1:
ORA-06550: línea 1, columna 7:
PLS-00905: el objeto SYSTEM.PP no es válido
ORA-06550: línea 1, columna 7:
PL/SQL: Statement ignored


si ahora el procedimento esta de la siguiente forma:

CREATE or REPLACE PROCEDURE pp AS
begin
declare
com varchar2(20);
cursor c1 is select com_nombre from comuna;
begin
open c1;
fetch c1 into com;
exit when c1%NOTFOUND;
dbms_output.put_line(com);
end loop;
end;
end;

no se en que estoy mal, a lo mejor es por el usuario????

Erik Izquierdo
30 de Septiembre del 2003
En una consulta dentro procedimiento almacenado no puedes dejar variables sin asignar, prueba lo siguiente:

CREATE OR REPLACE PROCEDURE pp AS
declare
v_col_1 comuna.col_1%type;
begin
select col_1
INTO v_col_1
from comuna;
end;