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

Ayuda creando procedimiento en Oracle

Estas en el tema de Ayuda creando procedimiento en Oracle en el foro de Oracle en Foros del Web. Como estan Estoy creando un procedimiento en oracle. Mes estoy basando en unos ejemplos de unos que ya estan hechos porque soy nuevo en esto. ...
  #1 (permalink)  
Antiguo 23/06/2010, 20:48
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 6 meses
Puntos: 50
Ayuda creando procedimiento en Oracle

Como estan

Estoy creando un procedimiento en oracle. Mes estoy basando en unos ejemplos de unos que ya estan hechos porque soy nuevo en esto.

Tengo un select que me carga unos registros de uan tabla de la BD. dependiendo el valor de determinados campos de cada registro tengo que hacer otras cosas.

Mi pregunta es. Es posible recorrer en el procedimiento el resultado del select? Como puedo hacerlo? Me pueden dar un ejemplo?


Yo trabajo con php lo que quiero hacer es algo asi como un
while ($variable = mssql_fetch_array($consulta)) PERO EN ORACLE


Gracias
  #2 (permalink)  
Antiguo 24/06/2010, 07:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 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

Etiquetas: procedimiento
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 14:28.