create table test_array(id serial primary key, str1 int[][][]);

插入两条测试数据。

insert into test_array values (1,array[[[1,2],[3,4],[5,6]],[[20,30],[40,50],[70,100]]]);

insert into test_array values (2,array[[[100,200],[300,400],[500,600]],[[2000,3000],[4000,5000],[7000,10000]]]);

为了能直观的看到结果集,我们得把数组的值换成普通的类型拿出来, 有以下几种方法。

不带分片的遍历,

create or replace function sp_array2table_simple(

anyarray

returns table (element int) as

$ytt$

declare array1 alias for $1;

x int;

begin

drop table if exists tmp_1;

create temporary table tmp_1 (id int);

<> foreach x in array array1

insert into tmp_1 values (x);

end loop label1;

return query select * from tmp_1;

$ytt$ language plpgsql;

t_girl=#select sp_array2ta

我们经常会对数据字典中的系统表进行 遍历 ,从而写一些SHELL脚本或者动态造数据等等。 这里我用PLSQL演示了三种方法来 遍历 一张表。表结构如下,t_girl=# \d tmp_1;Unlogged table "public.tmp_1"Column | Type | Modifiers----------+---------------------... 示例createtableempl(nametextprimarykey,bosstextnullreferencesnameonupdatecascadeondeletecascadedefaultnull);insertintoemplvalues('Paul',null);insertintoemplvalues('Luke','Paul');in... 我在 postgresql (版本9.4.4)中有一个相当复杂的功能,我需要一些帮助.我在我的函数中声明了一个循环(下面有大量工作):CREATE OR REPLACE function getRSI(psymbol varchar,pstarttime timestamp with time zone,pendtime timestamp with time zone,pduration doubl... 存储过程(FUNCITON)变量可以直接用 || 拼接。 存储过程的对象不可以直接用变量,要用 quote_ident(objVar) $1 $2是 FUNCTION 参数 的顺序 SQL语句中的大写全部会变成小写,要想大写存大,必须要用双引号。