bie*_*era 0 arrays postgresql plpgsql
以下是可能的吗?
我希望有一个用PL/pgSQL编写的过程,它接受类似"行集合"的参数,我的意思是我需要传递给类似字典的结构:
伪代码:
function_name({key1:val1,key2:val2, key3:val3 [, ...] })
Run Code Online (Sandbox Code Playgroud)
使用现代PostgreSQL,您可以简化这样的功能.
测试设置:
CREATE TABLE tbl1 (id int, value text);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,无需显式创建类型(如果类型基于表行),则会隐式为每个表创建一个类型.
功能:
CREATE FUNCTION f_insert_rows_into_tbl1(tbl1[])
RETURNS VOID AS
$BODY$
INSERT INTO tbl1 (id,value)
SELECT (a).*
FROM (SELECT unnest($1) AS a) x;
$BODY$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)
呼叫:
SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');
Run Code Online (Sandbox Code Playgroud)
请注意行数组的输入语法!
| 归档时间: |
|
| 查看次数: |
4655 次 |
| 最近记录: |