gpt4 book ai didi

sql - Postgres : array value must start with "{" or dimension information

转载 作者:行者123 更新时间:2023-11-29 11:59:42 28 4
gpt4 key购买 nike

我创建了 postgreSQL 函数,我在其中执行如下查询:

CREATE OR REPLACE FUNCTION eapar.get_eform_detail(frm_id bigint,lvl_codes text)
RETURNS TABLE(eform_detail_id bigint)
AS
$BODY$

DECLARE
query text;
level_codes text[];
BEGIN
query := 'SELECT eform_detail_id from eform_detail where form_id='||$1||' ';

--some sql code
--$2 is lvl_codes

select into level_codes string_to_array($2, ','); --uptil here no problem

RAISE NOTICE '%',level_codes; --printing {SRV,SAA} for 'SRV,SAA'::text

query:= query || 'AND level_code = ANY('''||level_codes||''') '; --problem area

--remaining sql code

函数已成功创建,但是当我调用时:

select * from eapar.get_eform_detail(265,'SRV,SAA'::text)  

它给出了错误:

ERROR:  array value must start with "{" or dimension information
LINE 1: ...orm_detail || 'AND level_code = ANY('''||level_codes||''') '

我是 postgres 函数的新手。不知道如何使用 ANY 运算符将文本数组替换为变量,并执行它。请帮忙。谢谢

最佳答案

RAISE NOTICE 返回的字符串格式看起来是正确的,所以我猜测 || 运算符没有强制将值转换为文本。这可能是因为它重载了数组的不同含义,因此误解了您的意图。

尝试显式转换:

query:= query || 'AND level_code = ANY('''||level_codes::text||''') ';

关于sql - Postgres : array value must start with "{" or dimension information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609663/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com