Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/11/2011, 14:25
Avatar de saunier
saunier
 
Fecha de Ingreso: octubre-2007
Mensajes: 38
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Crear bloque de datos con procedimiento

Tras muchas mas busquedas ya casi lo tengo o eso creo

Para que aparezcan las columnas he creado un paquete, en unidad de programas del navegador de objetos, darle al + y elegir "especificacion de paquete" darle nombre y despues escribir el siguiente codigo:
Código:
PACKAGE p1 AS
  TYPE p1_nom IS RECORD(    
    name       VARCHAR2(10),
    apel       VARCHAR2(10) );

  TYPE p1_nom_ref IS REF CURSOR RETURN p1_nom;  

  PROCEDURE query_procedure  (resultset IN OUT p1_nom_ref);
END;
Tras esto ir otra vez a unidad de programas, esta vez crear un "cuerpo del paquete" con el codigo:
Código:
PACKAGE BODY p1 AS
  PROCEDURE query_procedure(resultset IN OUT p1_nom_ref)  IS
  BEGIN
    OPEN resultset FOR
      SELECT name,apel from usuarios;
  END query_procedure;
END;
Con esto apareceran en columnas disponibles las columnas que indiques en el "p1_nom", lo que me pasa ahora es que una vez se crea el bloque de datos y voy a probarlo dandole al boton ejecutar consulta me sale el error: FRM-40505: error de oracle: No se ha podido realizar la consulta.

Y no hace falta decir que no se muestra ningun registro.

Cuando estas en el asistente de bloque de datos tras pedirme el procedimiento (p1.query_procedure) y elegir las columnas te va pidiendo varios procedimientos, uno para insertar, otro para actualizar, otro para suprimir y otro para bloquear registros. Aqui os he puesto un ejemplo del primer procedimiento porque tambien lo probe creando dentro del paquete un procedimiento para cada accion y me da tambien el mismo error.

Nadie ha creado nunca un bloque de datos desde un procedimiento??
Os pido una ultima ayudita para conseguir crear el bloque de datos, por favor.

Un saludo a todos y gracias a Matanga que me indico el camino para encontrar esto