我试图integer[]
在plpgsql函数中循环遍历整数数组().像这样的东西:
declare
a integer[] = array[1,2,3];
i bigint;
begin
for i in a
loop
raise notice "% ",i;
end loop;
return true;
end
Run Code Online (Sandbox Code Playgroud)
在我的实际用例中,整数数组a
作为参数传递给函数.我收到此错误:
Run Code Online (Sandbox Code Playgroud)ERROR: syntax error at or near "$1" LINE 1: $1
如何正确循环数组?
我正在尝试遍历几个字段并在它们上运行一个函数:
FOR field IN ARRAY['f1','f2'] LOOP
execute pg_temp.converFieldToLower(newTableNameRaw,field)
END LOOP;
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试使用的功能:
CREATE OR REPLACE FUNCTION pg_temp.converFieldToLower(t varchar, f varchar) RETURNS void AS $$
#variable_conflict use_variable
BEGIN
EXECUTE concat_ws (' ', 'UPDATE',t,'SET',f,'= LOWER(',f,')');
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
看起来这不是声明数组的正确方法,我做错了什么?
Run Code Online (Sandbox Code Playgroud)ERROR: syntax error at or near "ARRAY" LINE 49: FOR field IN ARRAY['f1','f2'] LOOP
我有一个包含整数数组的表.
我想创建一个聚合函数,它将返回一个包含所有行的二维数组.然后它被传递给plr
它做一些数学.
我有:
CREATE OR REPLACE
FUNCTION arrayappend(left int[][], right int[])
RETURNS int[] AS
$BODY$
SELECT $1 || $2 ;
$BODY$
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
和:
CREATE AGGREGATE array_sum2 (int[]) (
SFUNC = arrayappend,
STYPE = int[][],
INITCOND = '{}'
);
Run Code Online (Sandbox Code Playgroud)
但是返回类型int[]
不是int[][]
吗?
如何使用空的二维整数数组初始化聚合?
arrays postgresql aggregate-functions multidimensional-array
这个plpgsql脚本从一组jsonb对象键:值对中选择键,但是如何选择每对的值?
DO
$BODY$
DECLARE
js jsonb := '{"a": "1", "b": "2", "c": "3"}';
i text;
BEGIN
FOR i IN SELECT * FROM jsonb_each_text(js)
LOOP
RAISE NOTICE 'key %', i;
--RAISE NOTICE 'value %', i.value; <--fai
END LOOP;
END;
$BODY$;
Run Code Online (Sandbox Code Playgroud)
应该可以作为手册页http://www.postgresql.org/docs/9.4/static/functions-json.html表示返回值是关键文本,值文本的设置.这篇帖子Postgres - 数组for循环回答了数组的问题.还尝试了jsonb_each()和jsonb_array_elements()将迭代器更改为jsonb,错误"无法从对象中提取元素"
我正在尝试创建一个小函数,它将返回数组中的所有客户端,但我不断遇到错误。
DO $$
DECLARE
c_ids INTEGER[] := array[12879,16759];
BEGIN
SELECT *
FROM client
WHERE id IN (c_ids);
END $$;
Run Code Online (Sandbox Code Playgroud)
做这样的事情的正确方法是什么?我需要 c_ids 是一个变量,因为我将在查询中的许多地方使用它(示例直接查询不是最终查询)。