Tenho uma função que retorna o resultado de um select. O problema ocorre quando
aplico funções nos campos do select, aí retorna o seguinte erro:
ERRO: sintaxe de entrada é inválida para integer: "18:53:00"
CONTEXTO: PL/pgSQL function "fs_disponibilidade_barras_diario" line 21 at for
over select rows
********** Erro **********
Para esse select, o retorno ocorre da maneira certa:
SELECT * FROM "DISPONIBILIDADE_EQ" AS X WHERE X."data"=data ORDER BY X."id_eq",
X."data"
Para esse outro select dá erro:
SELECT X."id_eq", X."data",
fs_convertsegundostohora(X."nseg_disp"),
fs_convertsegundostohora(X."nseg_indisp"),
CAST(X."disp" AS DECIMAL(5,2)),
CAST(X."indisp" AS DECIMAL(5,2)),
X."tolerancia",
(SELECT tipo_dia FROM "DTF_TIPOS_DIAS" AS Y WHERE
Y."id_tipo_dia"=X."id_tipo_dia")
FROM "DISPONIBILIDADE_EQ" AS X WHERE
X."data"=data ORDER BY X."id_eq", X."data"
Eis a função:
CREATE OR REPLACE FUNCTION fs_disponibilidade_barras_diario(barra character
varying, data date, tolerancia integer)
RETURNS SETOF "DISPONIBILIDADE_EQ" AS
$BODY$
DECLARE
r_sql_barras RECORD;
r "DISPONIBILIDADE_EQ"%ROWTYPE;
numero integer;
sql_barras text = '';
id_barra character varying(20);
BEGIN
IF ( barra = '-1' ) THEN --Exibir para todas as barras em geral
SELECT fs_calcular_detalhes_dtf_tipo2('-1', data, tolerancia) INTO
numero;
ELSE
SELECT fs_calcular_detalhes_dtf_tipo2(barra, data, tolerancia) INTO
numero;
END IF;
FOR r IN ( << SELECT >> ) LOOP
RETURN NEXT r;
END LOOP;
RETURN;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION fs_disponibilidade_barras_diario(character varying, date,
integer) OWNER TO sage;
Tabela a ser retornada :
CREATE TABLE "DISPONIBILIDADE_EQ"
(
id_eq character varying(20) NOT NULL,
data date NOT NULL,
nseg_disp integer,
nseg_indisp integer,
disp real,
indisp real,
tipo_relatorio character varying(20),
tolerancia integer,
id_tipo_dia integer,
CONSTRAINT "pk-disponibilidade-eq" PRIMARY KEY (id_eq, data)
)
WITH (OIDS=FALSE);
PS: Não posso utilizar views, haja vista que a função é dinâmica - retorna
dados a partir de uma data específica.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral