【发布时间】:2020-05-02 02:14:55
【问题描述】:
我是使用 plpgsql 编程和在 postgresql 中存储函数的新手。 我编写了一个函数,称为:
CREATE OR REPLACE FUNCTION public.uploadbutton(VARIADIC arr character varying[])
RETURNS text
LANGUAGE plpgsql
AS $function$DECLARE
arrayi ALIAS for $1;
result text;
begin
return result;
END;
$function$
;
如您所见,该函数没有很多代码。问题是我真的不明白如何在 Postgresql 和 plpgsql 中处理数组。
我需要每隔 3 个分隔符拆分数组,直到数组结束,数组可以有很多输入,但最少 3 个。
SELECT uploadbutton('59373033336415021231','5','a','59373033335915022fff','5','b')
这里是一个调用它的例子。
输出应该是这样的:
('59373033336415021231','5','a')('59373033336415021231','5','a')
你能教我,如何处理吗?
各位小伙伴们好!
编辑:
得到这个结果后:
('59373033336415021231','5','a')('59373033336415021231','5','a')
我需要输入每 3 个参数,并以结果的第一部分作为参数调用第二个函数。第二个值必须是 Int。这应该是这样的:
编辑('59373033336415021231',5,'a') 结果的第二部分也是如此 编辑('59373033336415021231',5,'a')
我现在正在尝试,想用我的 edit() 函数获取第一个参数的 id。这就是我所拥有的:
CREATE OR REPLACE FUNCTION public.upload(string_in text)
RETURNS integer
LANGUAGE plpgsql
AS $function$DECLARE
string_in ALIAS FOR $1;
id integer;
begin
id= (select id from public.buttons where fbisn =
split_part(string_in,',',1));
return val;
end;
$function$
;
string_in 是每次第一个函数的 for 子句完成时的结果字符串。每次都会调用这个函数。
但目前,我不会得到任何结果。
感谢您的帮助
【问题讨论】:
-
你能添加一个输出应该是什么样子的示例吗?
-
输出应该是这样的:('59373033336415021231','5','a')('59373033336415021231','5','a')
-
感谢您编辑问题,我是新来的。 :)
-
我强烈建议不要这样做。不要将不同的东西混入一个巨大的参数数组。创建与您要传递的三种不同内容相匹配的三个输入参数,这样您还可以为它们提供正确的数据类型,例如
uploadbutton(p_codes int[], p_numbers int[], p_text text[]).
标签: arrays postgresql function plpgsql