Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group