【发布时间】:2021-02-11 16:59:58
【问题描述】:
我的桌子看起来像
CREATE TABLE dev.clbk_logs
(
id bigint NOT NULL,
clbk_typ character varying(255) COLLATE pg_catalog."default",
clbk_json json,
cre_dte timestamp without time zone,
ld_id bigint,
ld_num character varying(255) COLLATE pg_catalog."default",
mod_dte timestamp without time zone,
CONSTRAINT clbk_logs_pkey PRIMARY KEY (id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
我的功能是
CREATE OR REPLACE FUNCTION dev.my_method(p_callback_types TEXT[], p_days_ago INT)
RETURNS SETOF dev.clbk_logs
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
return query
SELECT * FROM dev.clbk_logs
WHERE (clbk_Typ::TEXT) IN (($1)) AND (current_date - cre_dte::date)< p_days_ago;
END;
$BODY
有人可以帮助解决上面的问题,并且应该得到预期的结果。 我想在查询中传递一个字符串数组。
我得到的错误是
LINE 2: WHERE (clbk_Typ::TEXT) IN (($1)) AND (current_date - cre_...
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT * FROM dev.clbk_logs
WHERE (clbk_Typ::TEXT) IN (($1)) AND (current_date - cre_dte::date)< p_days_ago
CONTEXT: PL/pgSQL function dev.my_method(text[],integer) line 3 at RETURN QUERY
SQL state: 42883
【问题讨论】:
标签: postgresql