Oracle - Problema Paquetes en Oracle

 
Vista:

Problema Paquetes en Oracle

Publicado por Jose luis mina (1 intervención) el 30/09/2003 18:00:13
la siguiente sentencia
select gINV_grupos.f_codigo(1,1) from dual;
me da el siguiente error cuando corro en ORacle 8.0.5.2.0 sobre SUN solaris
ERROR en línea 1:
ORA-06571: Function F_CODIGO does not guarantee not to update database
Cuando corror en Orcle 9.0.1.1.1 sobre NT
no me da el error y corre normalmente

A que se debe el error

Por fa es urgente
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema Paquetes en Oracle

Publicado por Byron (300 intervenciones) el 30/09/2003 21:14:41
Lo que pasa es que Oracle 8.0.5 no podia hacer sentencias DML dentro de un query, cuando quieras ver el resultado de una funcion que tenga insert, update o delete no uses un select function sino crea un bloque pl/sql:

declare
salida varchar2(100);
begin
salida := gINV_grupos.f_codigo(1,1); -- Retorna varchar??
dbms_output.put_line(salida);
end;
/

Para ver esta salida debe estar seteado la variable de entorno serveoutput a on.

Este es el equivalente error en una Base 8i:
ERROR at line 1:
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "gINV_grupos.f_codigo", line 7
ORA-06512: at line 1

Saludos DTB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema Paquetes en Oracle

Publicado por Sonya (7 intervenciones) el 07/11/2003 19:11:02
El problema se elimina definiendo en el procedimiento o la funcion con un pragma si es que en el paquete existen otros procedimientos o funciones que hagan insert, update o delete de alguna tabla

en la definicion del paquete debe estar una sentencia asi
function f_codigo (var1 number, var2 number) return number;
pragma restrict_references (f_codigo, WNDS, WNPS);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar