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