Muy buenas tardes muchachos ya logre compilar la FUNCTIOn y crearla pero no se como la puede ejecutar, alguno de uds me puede ayudar???
2008/7/11 Fabio Arias <[EMAIL PROTECTED]>: > 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 -- Fabio Hernando Arias Vera Cel. 314 411 7776