Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Crear y usar función en INSERT

Estas en el tema de Crear y usar función en INSERT en el foro de Oracle en Foros del Web. Hola a todos, Necesito lanzar un insert, en el que uno de los valores debe ser el resultado de un select. He intentado algo así: ...
  #1 (permalink)  
Antiguo 25/06/2008, 09:24
 
Fecha de Ingreso: marzo-2007
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
Crear y usar función en INSERT

Hola a todos,

Necesito lanzar un insert, en el que uno de los valores debe ser el resultado de un select. He intentado algo así:

CREATE OR REPLACE FUNCTION f01 ()
RETURN NUMBER
IS
nuevo_id NUMBER(11,2);
BEGIN
SELECT count(*)
INTO nuevo_id
FROM mi_tabla_01;
RETURN(nuevo_id);
END

INSERT INTO mi_tabla_02 (campo) values (fo1());

pero obtengo esto:

SQL Error: ORA-06575: La función o el paquete F01 tienen en un estado no válido
06575. 00000 - "Package or function %s is in an invalid state"

No sé cómo obtener información para saber qué falla... ¿?¿?

Gracias!!
  #2 (permalink)  
Antiguo 25/06/2008, 10:26
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Crear y usar función en INSERT

Hola que tal

Es mejor hacerlo directo

INSERT INTO mi_tabla_02 (campo)
SELECT count(*)
FROM mi_tabla_01
/

Espero te sea de Utilidad
  #3 (permalink)  
Antiguo 26/06/2008, 01:33
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Crear y usar función en INSERT

Cita:
Iniciado por IngProd Ver Mensaje
Hola a todos,

Necesito lanzar un insert, en el que uno de los valores debe ser el resultado de un select. He intentado algo así:

CREATE OR REPLACE FUNCTION f01 ()
RETURN NUMBER
IS
nuevo_id NUMBER(11,2);
BEGIN
SELECT count(*)
INTO nuevo_id
FROM mi_tabla_01;
RETURN(nuevo_id);
END

INSERT INTO mi_tabla_02 (campo) values (fo1());

pero obtengo esto:

SQL Error: ORA-06575: La función o el paquete F01 tienen en un estado no válido
06575. 00000 - "Package or function %s is in an invalid state"

No sé cómo obtener información para saber qué falla... ¿?¿?

Gracias!!
Lo primero : La funcion está descompilada.
Tira esto en el sql plus : ALTER FUNCTION F01 COMPILE;
Si te dice FUNCION ALTERADA CON ERRORES DE COMPILACION, tira esto otro :

SHOW ERR ( Esto te mostrará los errores que tiene la funcion )

Lo segundo, la forma de hacer el insert es esta :

INSERT INTO mi_tabla_02 select F01 from dual;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:36.