ERROR EN COMPILACION FUNCTION

From: "Fabio Arias" <fharias(at)gmail(dot)com>
To: Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: ERROR EN COMPILACION FUNCTION
Date: 2008-07-11 19:00:12
Message-ID: c1d7f0f90807111200u44c00d12s52ddf21060ec0f02@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Muy buenos dias muchachos, estoy empezando con la creacion de funciones y
tengo este error y no se por que es?

Si me pueden dar una mano para mejorarlo les agradecere mucho....

=== psql 1 ===
psql:129: ERROR: syntax error at end of input
LINEA 1: SELECT

########################################################################
CREATE FUNCTION ANULAR_APUESTA(IDTRANSACCION INTEGER, COLILLA VARCHAR,
ACEPTACION_AEL VARCHAR, IDUSUARIO_REG VARCHAR) RETURNS INTEGER AS $$
DECLARE
USUARIO "TSO"."USUARIO"%ROWTYPE;
CUENTAUSUARIO "TSO"."CUENTA"%ROWTYPE;
DISTRIBUIDOR "TSO"."CLIENTE"%ROWTYPE;
CUENTADISTRIBUIDOR "TSO"."CUENTA"%ROWTYPE;
PUNTODEVENTA "TSO"."CLIENTE"%ROWTYPE;
TRANSACCION "TSO"."TRANSACCION"%ROWTYPE;
SALDOFINAL NUMERIC(10,2);
SALDOCOMISION NUMERIC(10,2);
COMISIONPRODUCTODIS "TSO"."COMISION"%ROWTYPE;
COMISIONPRODUCTOPDV "TSO"."COMISION"%ROWTYPE;
COMISION NUMERIC(10,2);
VALORCOMISION NUMERIC(10,2);
IDTRANSACCION_ANULACION INTEGER;
IDNOVEDAD INTEGER;
BEGIN
-- CONSULTAR TRANSACCION
SELECT * INTO TRANSACCION FROM "TSO"."TRANSACCION" WHERE
"TRAN_ID"=IDTRANSACCION;
IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE TRANSACCION %',IDTRANSACCION;
RETURN;
END IF;
-- BUSCAR USUARIO DE TRANSACCION
SELECT * INTO USUARIO FROM "TSO"."USUARIO" WHERE
"USUA_ID"=TRANSACCION."USUA_ID";
IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE USUARIO DE TRANSACCION %',IDTRANSACCION;
RETURN;
END IF;
SELECT * INTO CUENTAUSUARIO FROM "TSO"."CUENTA" WHERE USUARIO."CUEN_ID";

IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE CUENTA PARA USUARIO %',USUARIO."USUA_ID";
RETURN;
END IF;
SELECT * INTO PUNTODEVENTA FROM "TSO"."CLIENTE" WHERE
"CLIE_ID"=USUARIO."CLIE_ID";
IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE PUNTO DE VENTA PARA USUARIO
%',USUARIO."USUA_ID";
RETURN;
END IF;
SELECT * INTO DISTRIBUIDOR FROM "TSO"."CLIENTE" WHERE
"CLIE_ID"=PUNTODEVENTA."CLIE_PADRE";
IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE DISTRIBUIDOR PARA PUNTO DE VENTA
%',PUNTODEVENTA."CLIE_ID";
RETURN;
END IF;
SELECT * INTO CUENTADISTRIBUIDOR FROM "TSO"."CUENTA" WHERE
"CUEN_ID"=DISTRIBUIDOR."CUEN_ID";
IF NOT FOUND THEN
RAISE EXCEPTION 'NO EXISTE CUENTA PARA DISTRIBUIDOR
%',DISTRIBUIDOR."CLIE_ID";
RETURN;
END IF;

-- INSERTAR MOVIMIENTO DE REVERSO DE VENTA
SALDOFINAL := CUENTAUSUARIO."CUEN_SALDO"+TRANSACCION."TRAN_VALOR";

INSERT INTO "TSO"."MOVIMIENTOSCUENTA" (
"CUEN_ID","TRAN_ID","TIMC_ID","MOCU_FECHAMOVIMIENTO",
"MOCU_SOBREGIROACTUAL", "MOCU_SALDOACTUAL",
"MOCU_SOBREGIRO","MOCU_SALDO", "MOCU_REGISTRADOPOR", "MOCU_VALOR")
VALUES(
CUENTAUSUARIO."CUEN_ID",IDTRANSACCION,13,now(),
0,SALDOFINAL,

CUENTAUSUARIO."CUEN_SOBREGIRO",CUENTAUSUARIO."CUEN_SALDO",IDUSUARIO_REG,TRANSACCION."TRAN_VALOR");

-- ACTUALIZAR EL SALDO DEL USUARIO
UPDATE "TSO"."CUENTA" SET
"CUEN_SALDO"="CUEN_SALDO"+TRANSACCION."TRAN_VALOR"
WHERE "CUEN_ID"=CUENTAUSUARIO."CUEN_ID";

-- BUSCAR COMISION LINEAL PDV
SELECT * INTO COMISIONPRODUCTOPDV FROM "TSO"."COMISION" WHERE
"USUA_ID"=USUARIO."USUA_ID" AND "PROD_ID"=TRANSACCION."PROD_ID"
AND "TICO_ID"=2;
IF NOT FOUND THEN
COMISION := 0;
ELSE
COMISION := COMISIONPRODUCTOPDV."COMI_VALOR";
END IF;
VALORCOMISION := TRANSACCION."TRAN_VALOR"*(COMISION/100);
SALDOCOMISION := SALDOFINAL;
SALDOFINAL := SALDOFINAL-VALORCOMISION;
-- INSERTAR MOVIMIENTO DE REVERSO DE COMISION
INSERT INTO "TSO"."MOVIMIENTOSCUENTA" (
"CUEN_ID","TRAN_ID","TIMC_ID","MOCU_FECHAMOVIMIENTO",
"MOCU_SOBREGIROACTUAL", "MOCU_SALDOACTUAL",
"MOCU_SOBREGIRO","MOCU_SALDO", "MOCU_REGISTRADOPOR", "MOCU_VALOR")
VALUES(
CUENTAUSUARIO."CUEN_ID",IDTRANSACCION,14,now(),
0,SALDOFINAL,

CUENTAUSUARIO."CUEN_SOBREGIRO",SALDOCOMISION,IDUSUARIO_REG,VALORCOMISION);
-- ACTUALIZAR EL SALDO DEL USUARIO
UPDATE "TSO"."CUENTA" SET "CUEN_SALDO"="CUEN_SALDO"-VALORCOMISION
WHERE "CUEN_ID"=CUENTAUSUARIO."CUEN_ID";

-- BUSCAR COMISION LINEAL DIS
SELECT * INTO COMISIONPRODUCTODIS FROM "TSO"."COMISION" WHERE
"CLIE_ID"=DISTRIBUIDOR."CLIE_ID" AND "PROD_ID"=TRANSACCION."PROD_ID"
AND "TICO_ID"=3;
IF NOT FOUND THEN
COMISION := 0;
ELSE
COMISION := COMISIONPRODUCTODIS."COMI_VALOR";
END IF;
VALORCOMISION := TRANSACCION."TRAN_VALOR"*(COMISION/100);
SALDOFINAL := CUENTADISTRIBUIDOR."CUEN_SALDO"-VALORCOMISION;
-- INSERTAR REVERSO COMISION DE DISTRIBUIDOR
INSERT INTO "TSO"."MOVIMIENTOSCUENTA" (
"CUEN_ID","TRAN_ID","TIMC_ID","MOCU_FECHAMOVIMIENTO",
"MOCU_SOBREGIROACTUAL", "MOCU_SALDOACTUAL",
"MOCU_SOBREGIRO","MOCU_SALDO", "MOCU_REGISTRADOPOR", "MOCU_VALOR")
VALUES(
CUENTADISTRIBUIDOR."CUEN_ID",IDTRANSACCION,15,now(),
0,SALDOFINAL,

CUENTADISTRIBUIDOR."CUEN_SOBREGIRO",CUENTADISTRIBUIDOR."CUEN_SALDO",IDUSUARIO_REG,VALORCOMISION);
-- ACTUALIZAR SALDO DE DISTRIBUIDOR
UPDATE "TSO"."CUENTA" SET "CUEN_SALDO"="CUEN_SALDO"-VALORCOMISION
WHERE "CUEN_ID"=CUENTADISTRIBUIDOR."CUEN_ID";
--- TERMINADO EL ANULADO
--- CREAR TRANSACCION DE ANULACION
INSERT INTO "TSO"."TRANSACCION" (
"TITR_ID", "PROD_ID", "USUA_ID", "TRAN_FECHA", "TRAN_VALOR",
"TRAN_ESTADO", "TRAN_REGISTRADOPOR")
VALUES (32, 2, IDUSUARIO_REG, now(), TRANSACCION."TRAN_VALOR", '1',
IDUSUARIO_REG);
SELECT currval('"TSO"."TRANSACCION_TRAN_ID_seq"') INTO
IDTRANSACCION_ANULACION;

-- INSERTAR NOVEDAD DE TRANSACCION
INSERT INTO "TSO"."NOVEDADTRANSACCION"(
"NOVE_ID", "TRAN_ID", "NOTR_IDTRANSACCION", "NOTR_OBSERVACION",
"NOTR_REGISTRADOPOR")
VALUES (5, IDTRANSACCIONANULACION, IDTRANSACCION, ACEPTACION_AEL,
IDUSUARIO_REG);
SELECT currval('"TSO"."NOVEDADTRANSACCION_NOTR_ID_seq"') INTO IDNOVEDAD;
RETURN IDNOVEDAD;
END;
$$ LANGUAGE plpgsql;
########################################################################

--
Fabio Hernando Arias Vera
Cel. 314 411 7776

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Beltran R. 2008-07-11 19:29:39 Re: pg_dump y pg_restore
Previous Message Alvaro Herrera 2008-07-11 18:38:22 Re: pg_dump y pg_restore