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语句中的大写全部会变成小写,要想大写存大,必须要用双引号。