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

recorrer un array e insertar en la bd

Estas en el tema de recorrer un array e insertar en la bd en el foro de PostgreSQL en Foros del Web. Hola, realice una funcion que inserta la cacecera y el detalle de un pedido, pero no puedo ingresar mas de un detalle, debo de hacer ...
  #1 (permalink)  
Antiguo 15/07/2014, 18:06
 
Fecha de Ingreso: abril-2014
Mensajes: 17
Antigüedad: 10 años, 7 meses
Puntos: 0
recorrer un array e insertar en la bd

Hola, realice una funcion que inserta la cacecera y el detalle de un pedido, pero no puedo ingresar mas de un detalle, debo de hacer alguna especie de bucle for o while?
como lo puedo hacer?

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION sp_pedidos(pfecha DATE, pcliente INTEGER, pvendedor INTEGER,pproducto INTEGER,pcantidad INTEGER)
  2.   RETURNS void AS
  3. $BODY$
  4. BEGIN
  5.    
  6.     INSERT INTO pedido_cabecera(ped_fecha, cli_cod, vnd_cod) VALUES (pfecha, pcliente, pvendedor);
  7.        
  8.     INSERT INTO pedido_detalle(ped_nro, pro_cod, und_cod,pde_cant) VALUES ((SELECT MAX(ped_nro) FROM pedido_cab), pproducto,  pcantidad);
  9.            
  10.    
  11. END;
  12. $BODY$
  13.   LANGUAGE 'plpgsql' VOLATILE
[/CODE]

Última edición por gnzsoloyo; 16/08/2014 a las 07:11
  #2 (permalink)  
Antiguo 25/07/2014, 18:17
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 1 mes
Puntos: 58
Respuesta: recorrer un array e insertar en la bd

Hola que tal, bueno una aclaracion nada mas.

Lo que estas haciendo es un INSERT nada mas, que deseas hacer???

Le vas a enviar todos los valores de una o como le vas a hacer.

Y principalmente, ¿ Que deseas hacer ?

__________________
Your Code as a Crime Scene...
  #3 (permalink)  
Antiguo 04/08/2014, 06:41
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: recorrer un array e insertar en la bd

te aconsejo uses como parametro en tu funcion el tipo de dato ARRAY[], dentro de la funcion recorres el array

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION "public"."pa_GrabarFact" (xnumero VARCHAR, xcliente VARCHAR, xtotal NUMERIC, xdetalle INTEGER []) RETURNS INTEGER AS
  2. $body$
  3. BEGIN
  4. INSERT INTO public."Cabecera"(numero,cliente,total)
  5. VALUES(xnumero,xcliente,xtotal);
  6. FOR i IN array_lower(xdetalle,1) .. array_upper(xdetalle,1) LOOP
  7. INSERT INTO public."Detalle"(numero,item)
  8. VALUES(xnumero, xdetalle[i]);
  9. END LOOP;
  10. RETURN 1;
  11. END;
  12. $body$
  13. LANGUAGE 'plpgsql'
  14. VOLATILE
  15. CALLED ON NULL INPUT
  16. SECURITY INVOKER
  17. COST 100;

y la invoco con:
Código SQL:
Ver original
  1. SELECT "public"."pa_GrabarFact"('0000003','10167201534',5 0,ARRAY[1,2,3]) AS resultado;

Última edición por gnzsoloyo; 04/08/2014 a las 07:10
  #4 (permalink)  
Antiguo 16/08/2014, 07:05
 
Fecha de Ingreso: abril-2014
Mensajes: 17
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: recorrer un array e insertar en la bd

Lo que deseo hacer es insertar varios registros de una vez en una funcion, de la forma que realicé solo me inserta un registro. Espero haber aclarado.
  #5 (permalink)  
Antiguo 16/08/2014, 07:06
 
Fecha de Ingreso: abril-2014
Mensajes: 17
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: recorrer un array e insertar en la bd

muchas gracias edwinsp lo voy a probar

Etiquetas: bd, sql
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 11:45.