Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/06/2008, 01:33
jc3000
 
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;