Procedimientos Almacenados
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.
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.
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????
La tabla esta creada con el usuario system.
Quiza ese es el error?????
Quiza ese es el error?????
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
SAludos
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
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
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????
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????
