el argumento de AND debe ser de tipo boolean,
Publicado por miguel angel (1 intervención) el 06/08/2019 01:44:21
de antemano muchas gracias por la ayuda que me puedan brindar el tema es el siguiente:
estoy realizando una función en postgres la cuan en donde retorno una consulta y esta recibe como parámetro 3 condiciones que sera las condiciones de dicha consulta.
el asunto que al mandar a llamar la función me retorna el siguiente mensaje :
ERROR: el argumento de AND debe ser de tipo boolean, no tipo character varying
aun no tengo mucha experiencia con base de datos , espero que alguien me pueda orientar con esto
estoy realizando una función en postgres la cuan en donde retorno una consulta y esta recibe como parámetro 3 condiciones que sera las condiciones de dicha consulta.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
CREATE OR REPLACE FUNCTION pagos.f_reporteingresos (
IN p_fechaIncio character varying,
IN p_fechaFin character varying,
IN p_condicion1 character varying,
IN p_condicion2 character varying,
IN p_condicion3 character varying
)
RETURNS TABLE (
"CAMPO" character varying,
"IMPUESTO" numeric(14,2),
"ADICIONAL" numeric(14,2),
"MULTA" numeric(14,2),
"RECARGO" numeric(14,2),
"GASTOS" numeric (14,2),
"INGRESOS" numeric(14,2),
"DESCUENTO" numeric(14,2),
pred_count bigint ) AS
$BODY$ DECLARE
BEGIN RETURN QUERY
select campo,
case when campo='IMPUESTO' THEN sum(monto) ELSE SUM(0) END IMPUESTO,
case when campo='ADICIONAL' THEN sum(monto) ELSE SUM(0) END ADICIONAL,
case when campo='MULTA' THEN sum(monto) ELSE SUM(0) END MULTA,
case when campo='RECARGO' THEN sum(monto) ELSE SUM(0) END RECARGO,
case when campo IN ('GASTOS','HONORA') THEN sum(monto) ELSE SUM(0) END GASTOS,
case when campo IN ('IMPUESTO','ADICIONAL','MULTA','RECARGO','GASTOS','HONORA') THEN sum(monto) ELSE SUM(0) END INGRESO,
case when campo IN ( 'A_MAYORES' ,'SUBSIDIO', 'CANT_C','PENSION')THEN sum(monto) ELSE SUM(0) END DESCUENTO,
case when campo = 'IMPUESTO' THEN COUNT(A.TIPO_PREDIO) ELSE 0 END PRED_COUNT
FROM (
SELECT "substring"(pcc.num_cuenta_contable::text, 1, 4)::numeric AS cuenta_id,
"substring"(pcc.num_cuenta_contable::text, 5, 4)::numeric AS subcuenta_id,
"substring"(pcc.num_cuenta_contable::text, 9, 5)::numeric AS ssubcuenta_id,
"substring"(pcc.num_cuenta_contable::text, 14, 4)::numeric AS sssubcuenta_id,
ecpc.id_pago, ecpc.id_recibo, ecpc.id_control_int, ecpc.id_cuenta, erp.e_fecha_pago,
erp.estatus, pcc.num_cuenta_contable, pcc.desc_cuenta_contable AS desc_cta_arbitrio,
CASE
WHEN pcc.campo::text = ANY (ARRAY['SUBSIDIO'::character varying::text,
'PENSION'::character varying::text, 'A_MAYORES'::character varying::text,
'CANT_C'::character varying::text, 'DESC_SERV'::character varying::text,
'DESCUENTO'::character varying::text])
THEN (ecpc.monto * (-1)::numeric)::numeric(18,2)
ELSE ecpc.monto END AS monto, pcc.id_concepto_pred, pcc.tipo_predio, csc.descripcion AS desc_cuenta_contable
FROM pagos.e_concentrado_predial_contable ecpc
JOIN pagos.e_recibos_predial erp ON ecpc.id_pago = erp.id_pago AND ecpc.id_recibo = erp.id_recibo
JOIN pagos.cat_cuentas_contables pcc ON pcc.id_cuenta = ecpc.id_cuenta
JOIN pagos.cat_ssubcuenta csc ON pcc.cve_ssubcuenta = csc.cve_ssubcuenta AND pcc.cve_subcuenta = csc.cve_subcuenta AND pcc.cve_cuenta = csc.cve_cuenta
WHERE erp.estatus::text = 'P'::text
ORDER BY "substring"(pcc.num_cuenta_contable::text, 1, 4)::numeric,
"substring"(pcc.num_cuenta_contable::text, 5, 4)::numeric,
"substring"(pcc.num_cuenta_contable::text, 9, 5)::numeric,
erp.e_fecha_pago
) a
LEFT JOIN pagos.cat_cuentas_contables b on a.id_cuenta=b.id_cuenta
WHERE p_condicion1
AND p_condicion2
AND p_condicion3
AND date_trunc('day',A.E_FECHA_PAGO) BETWEEN date_trunc('day', TO_DATE(p_fechaIncio,'DD/MM/YYYY'))
AND date_trunc('day', TO_DATE(p_fechaFin,'DD/MM/YYYY'))
group by campo;
el asunto que al mandar a llamar la función me retorna el siguiente mensaje :
ERROR: el argumento de AND debe ser de tipo boolean, no tipo character varying
aun no tengo mucha experiencia con base de datos , espero que alguien me pueda orientar con esto
Valora esta pregunta


0