Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/06/2010, 07:19
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Ayuda creando procedimiento en Oracle

helacer

Lo puedes hacer con cursores, o con variables tipo record o haciendo uso de la instrucción bulk collect.


Un ejemplo de cursores:
Código SQL:
Ver original
  1. DECLARE
  2.   CURSOR nombre_cursor IS
  3.   SELECT campo1,campo2 FROM tabla;
  4.   campo1 VARCHAR2(100);
  5.   campo2 NUMBER;
  6. BEGIN
  7.  --Se abre el cursor con los datos de la consulta
  8.  OPEN nombre_cursor;
  9.  --Mediante un ciclo LOOP se puede recorrer todos los registros del cursor que se requieran
  10.  LOOP
  11.     --Fetch avanza la posición del cursor. Es decir... avanzar el regsitro. Cuando estableces
  12.     --INTO la consulta devuelve 2 campos, por eso se requieren 2 variables.
  13.     FETCH nombre_cursor INTO campo1,campo2;
  14.     --Condición para que salga cuando termine de recorrer el cursor
  15.     EXIT WHEN nombre_cursor%NOTFOUND;
  16.     --Imprimir los registros de la consulta.
  17.     DBMS_OUTPUT.PUT_LINE(campo1 || '  ' || campo2);
  18.   END LOOP;
  19.   --cierre del cursor
  20.   CLOSE nombre_cursor;
  21. END;


Un ejemplo de variables record
Código SQL:
Ver original
  1. DECLARE
  2.    v_record tabla%ROWTYPE;
  3. BEGIN
  4.    SELECT * INTO v_record FROM tabla WHERE campo=1;
  5.    IF SQL%NOTFOUND THEN
  6.      DBMS_OUTPUT.PUT_LINE('No encontro datos');
  7.    ELSE
  8.      DBMS_OUTPUT.PUT_LINE('Encontro datos');
  9.    END IF;
  10. EXCEPTION
  11.    WHEN no_data_found THEN
  12.       DBMS_OUTPUT.PUT_LINE('Error: No encontro datos');
  13. END;
Manejar variables record, tiene la desventaja que solo funciona para consultas que devuelven un unico registro.

Para emplear bulk collect creo que esta pagina lo explica bien.
http://www.devjoker.com/contenidos/T...K-COLLECT.aspx


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming