Re: Mas de 32 Parametros : FE DE ERRATAS linea de comando muy larga dentro de function

From: "Pepe Ballaga" <pepe(at)transnet(dot)cu>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Mas de 32 Parametros : FE DE ERRATAS linea de comando muy larga dentro de function
Date: 2005-08-30 14:00:41
Message-ID: 03f601c5ad6b$35553650$da64000a@pepesql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

este es el mensaje de error que me da

ERROR: syntax error at or near "$1" at character 28
QUERY: INSERT INTO trabajadores ( $1 , $2 , $3 , $4 , $5 , $6 , $7 ,
$8 , $9 , $10 , $11 , $12 , $13 , $14 , fk_escolaridad,
ubicacion_defensa, $15 , $16 , fk_cargo, $17 , fk_tipocontra

aca ahora les pongo la funcion completa a ver si ustedes me detectan el
error porque la verdad es que no lo veo. gracias

CREATE OR REPLACE FUNCTION addprueba(_varchar) RETURNS void AS
$BODY$
DECLARE
var1 ALIAS FOR $1;
numero varchar:= var1[1];
ci varchar:= var1[2];
nombre text:= var1[3];
apellido1 text:= var1[4];
apellido2 text:= var1[5];
lugar_nac text;
padre text;
madre text;
direccion text:=var1[9];
municipio text:=var1[10];
telefono text;
email text;
raza varchar;
sexo varchar:=var1[14];
escolaridad integer;
defensa text;
fecha_alta date:=now();
fecha_cargo date;
cargo integer;
forma_pago smallint;
tipocontrato integer;
departamento integer;
area1 integer;
tarifa_promedio_anual numeric(10,4);
salario_basico numeric(10,2);
salario_adicional numeric(10,2);
salario_plus numeric(10,2);
salario_otros numeric(10,2);
tridente numeric(10,2);
fecha_baja date:=now();
motivo_baja text;
--baja boolean:=var1[32];
baja boolean:=0;
sanciones text;
BEGIN
IF var1[6]<>'' THEN
lugar_nac := var1[6];
END IF;
IF var1[7]<>'' THEN
padre := var1[7];
END IF;
IF var1[8]<>'' THEN
madre := var1[8];
END IF;
IF var1[11]<>'' THEN
telefono := var1[11];
END IF;
IF var1[12]<>'' THEN
email := var1[12];
END IF;
IF var1[13]<>'' THEN
-- raza := var1[13];
raza := 'M'; --var1[13]
END IF;
IF var1[15]<>'' THEN
escolaridad :=var1[15]::integer;
END IF;
IF var1[16]<>'' THEN
defensa := var1[16];
END IF;
IF var1[18]<>'' THEN
fecha_cargo := var1[18]::date;
END IF;
IF var1[19]<>'' THEN
escolaridad := var1[19]::integer;
END IF;
IF var1[20]<>'' THEN
forma_pago := var1[20]::smallint;
END IF;
IF var1[21]<>'' THEN
tipocontrato := var1[21]::integer;
END IF;
IF var1[22]<>'' THEN
departamento := var1[22]::integer;
END IF;
IF var1[23]<>'' THEN
area1:= var1[23]::integer;
END IF;
IF var1[24]<>'' THEN
tarifa_promedio_anual := var1[24]::numeric(10,4);
END IF;
IF var1[25]<>'' THEN
salario_basico := var1[25]::numeric(10,2);
END IF;
IF var1[26]<>'' THEN
salario_adicional := var1[26]::numeric(10,2);
END IF;
IF var1[27]<>'' THEN
salario_plus := var1[27]::numeric(10,2);
END IF;
IF var1[28]<>'' THEN
salario_otros := var1[28]::numeric(10,2);
END IF;
IF var1[29]<>'' THEN
tridente := var1[29]::numeric(10,2);
END IF;
IF var1[30]<>'' THEN
-- fecha_baja := var1[30];
END IF;
IF var1[31]<>'' THEN
motivo_baja := var1[31];
END IF;
IF var1[32]<>'' THEN
sanciones := var1[32];
END IF;

--IF var2='' THEN
--var2 := null;
--INSERT INTO trabajadores (numero,
ci,nombre,apellido1,apellido2,lugar_nac,padre,madre,direccion,municipio,telefono,email,raza,sexo,fk_escolaridad,ubicacion_defensa,fecha_alta,fecha_cargo,fk_cargo,forma_pago,fk_tipocontrato,fk_departamento,fk_area,tarifa_promedio_anual,salario_basico,salario_adicional,salario_plus,salario_otros,tridente,fecha_baja,motivo_baja,
baja, sanciones) values (numero, ci,nombre,
apellido1,apellido2,lugar_nac,padre,madre,direccion,municipio,telefono,email,raza,sexo,escolaridad,defensa,fecha_alta,fecha_cargo,cargo,forma_pago,tipocontrato,departamento,area1,tarifa_promedio_anual,salario_basico,salario_adicional,salario_plus,salario_otros,tridente,fecha_baja,motivo_baja,baja,sanciones);
INSERT INTO trabajadores (numero,
ci,
nombre,
apellido1,
apellido2,
lugar_nac,
padre,
madre,
direccion,
municipio,
telefono,
email,
raza,
sexo,
fk_escolaridad,
ubicacion_defensa,
fecha_alta,
fecha_cargo,
fk_cargo, forma_pago,
fk_tipocontrato,
fk_departamento,
fk_area1,
tarifa_promedio_anual,
salario_basico,
salario_adicional,
salario_plus,
salario_otros,
tridente,
fecha_baja,
motivo_baja,
baja,
sanciones)
VALUES (numero,
ci,
nombre,
apellido1,
apellido2,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null, null, null, null, null, null, null, null, null, null, null, 0,
null);

RETURN VOID;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

a continuacion este es el script para crear la tabla:

CREATE TABLE "public"."trabajadores" (
"pk_trabajador" SERIAL,
"numero" VARCHAR(5) NOT NULL,
"ci" VARCHAR(12) NOT NULL,
"nombre" TEXT NOT NULL,
"apellido1" TEXT NOT NULL,
"apellido2" TEXT NOT NULL,
"lugar_nac" TEXT,
"padre" TEXT,
"madre" TEXT,
"direccion" TEXT,
"municipio" TEXT,
"telefono" TEXT,
"email" TEXT,
"raza" VARCHAR(1),
"sexo" VARCHAR(1),
"fk_escolaridad" INTEGER,
"ubicacion_defensa" TEXT,
"fecha_alta" DATE,
"fecha_cargo" DATE,
"fk_cargo" INTEGER,
"forma_pago" SMALLINT DEFAULT 0,
"fk_tipocontrato" INTEGER,
"fk_departamento" INTEGER,
"fk_area1" INTEGER,
"tarifa_promedio_anual" NUMERIC(10,4),
"salario_basico" NUMERIC(10,2),
"salario_adicional" NUMERIC(10,2),
"salario_plus" NUMERIC(10,2),
"salario_otros" NUMERIC(10,2),
"tridente" NUMERIC(10,2),
"fecha_baja" DATE,
"motivo_baja" TEXT,
"baja" BOOLEAN DEFAULT false,
"sanciones" TEXT,
CONSTRAINT "trabajadores_pkey" PRIMARY KEY("pk_trabajador")
) WITH OIDS;

muchas gracias y ojala me puedan ayudar

PEPE

Pepe Ballaga
Analista de Sistemas
SITRANS. La Habana Cuba
Tel: 8624685
pepe(dot)ballaga(at)gmail(dot)com

----- Original Message -----
From: "Juan P. Aviles" <jputem(at)yahoo(dot)es>
To: "Pepe Ballaga" <pepe(at)transnet(dot)cu>
Sent: Tuesday, August 30, 2005 9:46 AM
Subject: Re: [pgsql-es-ayuda] Mas de 32 Parametros : FE DE ERRATAS linea de
comando muy larga dentro de function

>
>>
>> INSERT INTO trabajadores (numero,
>>
> ci,nombre,apellido1,apellido2,lugar_nac,padre,madre,direccion,municipio,telefono,email,raza,sexo,escolaridad,defensa,fecha_alta,fecha_cargo,fk_cargo,fk_tipocontrato,fk_departamento,fk_area,tarifa_promedio_anual,salario_basico,salario_adicional,salario_plus,salario_otros,tridente,fecha_baja,motivo_baja,baja,sanciones)
>> values (numero,
>>
> ci,nombre,apellido1,apellido2,lugar_nac,padre,madre,direccion,municipio,telefono,email,raza,sexo,fk_escolaridad,defensa,fecha_alta,fecha_cargo,cargo,tipocontrato,departamento,area1,tarifa_promedio_anual,salario_basico,salario_adicional,salario_plus,salario_otros,tridente,fecha_baja,motivo_baja,baja,sanciones);
>>
>>
>> el error me da porque la linea es muy larga y
>> parece que el posgres tiene
>> problemas pa interpretar eso. gracias
>> RETURN VOID;
>> END;
>> $BODY$
>> LANGUAGE 'plpgsql' VOLATILE;
>>
>>
>
> Por favor envia el mensaje de error que lanza
> postgres.
>
>
> De todas manera cuando hago ese tipo de inserts
> largos lo hago de la siguiente manera y nunca me ha
> dado problemas:
>
>
> insert into prueba (campo1,
> campo2 ,
> .......,
> .......,
> campo32)
>
> Values (valor1 ,
> valor2 ,
> ....... ,
> ....... ,
> valor32 );
>
>
>
>
>
>
>
>
> ______________________________________________
> Renovamos el Correo Yahoo!
> Nuevos servicios, más seguridad
> http://correo.yahoo.es
>
>

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-08-30 14:33:02 Re: Mas de 32 Parametros : FE DE ERRATAS linea de comando muy larga dentro de function
Previous Message Juan P. Aviles 2005-08-30 13:42:47 Re: Mas de 32 Parametros : FE DE ERRATAS linea de comando muy larga dentro de function