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

¿BULK COLLECT INTO de PL/SQL en PL/pgSQL?

Estas en el tema de ¿BULK COLLECT INTO de PL/SQL en PL/pgSQL? en el foro de PostgreSQL en Foros del Web. Hola... estoy migrando un esquema de Oracle hacia Postgres, y necesito convertir ciertas funciones de la BD origen a sus análogas en el destino. En ...
  #1 (permalink)  
Antiguo 20/01/2015, 06:56
Avatar de Kluster  
Fecha de Ingreso: agosto-2005
Ubicación: Cuba
Mensajes: 86
Antigüedad: 15 años, 3 meses
Puntos: 1
Pregunta ¿BULK COLLECT INTO de PL/SQL en PL/pgSQL?

Hola... estoy migrando un esquema de Oracle hacia Postgres, y necesito convertir ciertas funciones de la BD origen a sus análogas en el destino.

En Oracle, para extraer filas de una tabla hacia una estructura de memoria e iterar sobre ellas, se puede emplear una colección en la forma TYPE tARREGLO IS TABLE OF MI_TABLA%ROWTYPE.

¿De qué manera se puede lograr esto mismo en PL/pgSQL? Porque siempre queda la opción de iterar mediante un cursor FOR-LOOP, pero me gusta más la primera.

Gracias.
  #2 (permalink)  
Antiguo 20/01/2015, 08:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años, 9 meses
Puntos: 360
Respuesta: ¿BULK COLLECT INTO de PL/SQL en PL/pgSQL?

Que yo sepa, la forma mas parecida de simular un bulk collect en postgresql es con arrays y de igual forma con tipos de datos personalizados.

Código SQL:
Ver original
  1. CREATE TYPE type_tu_tipo AS
  2.    (fecha TIMESTAMP WITHOUT TIME zone,
  3.     edad INTEGER,
  4.     nombre VARCHAR(100));

Estos tipos se deben declarar antes de ser usados, a diferencia de oracle que pueden ser volatiles en el tiempo de vida del bloque, función o procedimiento.

Posterior, se declara:
Código SQL:
Ver original
  1. v_mi_variable type_tu_tipo[];
  2. v_mi_variable := array(SELECT (fecha,edad,nombre)::type_tu_tipo FROM tabla);

Ya despues de tener el array cargado, puedes proceder a recorrerlo.

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

Etiquetas: pl-sql, postgres, sql, tabla
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 04:30.