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

problemas para realizar la inserccion de un array en postgresql

Estas en el tema de problemas para realizar la inserccion de un array en postgresql en el foro de PostgreSQL en Foros del Web. hola amigos espero me puedan ayudar tengo problemas para realizar la inserccion de un array en postgresql tengo la siguiente instruccion sql @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 27/11/2012, 07:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
problemas para realizar la inserccion de un array en postgresql

hola amigos espero me puedan ayudar

tengo problemas para realizar la inserccion de un array en postgresql

tengo la siguiente instruccion sql

Código SQL:
Ver original
  1. SELECT inserciones(TO_DATE('2012-11-17','YYYY-MM-DD'),TO_DATE('2012-11-17','YYYY-MM-DD'),'22:32'::CHARACTER VARYING,'22:32'::CHARACTER VARYING,1::INTEGER,1::INTEGER,'ff'::CHARACTER VARYING,1::INTEGER,1::INTEGER,'1',array[725,749,766]::INTEGER[]);


este es el error que obtengo

ERROR: la columna «id_cat» es de tipo integer[] pero la expresión es de tipo integer
LINE 1: ...LUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'), $1 , $2 )
^
HINT: Necesitará reescribir la expresión o aplicarle una conversión de tipo.
QUERY: INSERT INTO subfenomenos VALUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'), $1 , $2 )
CONTEXT: PL/pgSQL function "inserciones" line 7 at sentencia SQL


********** Error **********

ERROR: la columna «id_cat» es de tipo integer[] pero la expresión es de tipo integer
SQL state: 42804
Hint: Necesitará reescribir la expresión o aplicarle una conversión de tipo.
Context: PL/pgSQL function "inserciones" line 7 at sentencia SQL



y la funcion que tengo es esta

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION inserciones(fec_ini_actividad DATE,fec_fin_actividad DATE,hor_ini_actividad CHARACTER VARYING(30),hor_fin_actividad CHARACTER VARYING(30),fen_actividad INTEGER,vol_actividad INTEGER,ban_actividad CHARACTER VARYING(20),nba_actividad INTEGER,
  2.   rep_actividad INTEGER,
  3.   obs_actividad text,
  4.   id_cat INTEGER[]
  5. ) RETURNS INTEGER AS $$
  6. DECLARE
  7. id_tabla BIGINT;
  8. BEGIN
  9. id_tabla := secuenciaa();
  10. INSERT INTO actividad VALUES (id_tabla,fec_ini_actividad,fec_fin_actividad,hor_ini_actividad,hor_fin_actividad,fen_actividad,vol_actividad,ban_actividad,nba_actividad,rep_actividad,obs_actividad);
  11. FOR i IN 1..array_upper(id_cat,1) LOOP
  12. INSERT INTO subfenomenos VALUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'),id_tabla,i);
  13. END LOOP;
  14. RETURN id_tabla;
  15. END;
  16. $$ LANGUAGE plpgsql;
  #2 (permalink)  
Antiguo 27/11/2012, 08:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: problemas para realizar la inserccion de un array en postgresql

hola amigos lo soluciones

tenia un problema en la funcion en la parte del for

esta es la funcion corregida

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION inserciones(fec_ini_actividad DATE,fec_fin_actividad DATE,hor_ini_actividad CHARACTER VARYING(30),hor_fin_actividad CHARACTER VARYING(30),fen_actividad INTEGER,vol_actividad INTEGER,ban_actividad CHARACTER VARYING(20),nba_actividad INTEGER,
  2.   rep_actividad INTEGER,
  3.   obs_actividad text,
  4.   id_cat INTEGER[]
  5. ) RETURNS INTEGER AS $$
  6. DECLARE
  7. id_tabla BIGINT;
  8. BEGIN
  9. id_tabla := secuenciaa();
  10. INSERT INTO actividad VALUES (id_tabla,fec_ini_actividad,fec_fin_actividad,hor_ini_actividad,hor_fin_actividad,fen_actividad,vol_actividad,ban_actividad,nba_actividad,rep_actividad,obs_actividad);
  11. FOR i IN 1..array_upper(id_cat,1) LOOP
  12. END LOOP;
  13. INSERT INTO subfenomenos VALUES (NEXTVAL('subfenomenos_id_sub_fenomeno_seq'),id_tabla,id_cat);
  14. RETURN id_tabla;
  15. END;
  16. $$ LANGUAGE plpgsql;


y pruebo de la siguiente manera
Código SQL:
Ver original
  1. SELECT inserciones(TO_DATE('2012-11-17','YYYY-MM-DD'),TO_DATE('2012-11-17','YYYY-MM-DD'),'22:32'::CHARACTER VARYING,'22:32'::CHARACTER VARYING,1::INTEGER,1::INTEGER,'ff'::CHARACTER VARYING,1::INTEGER,1::INTEGER,'1',array[1,1,1]);

Etiquetas: postgre, 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 16:25.