以下是可能的吗?
我希望有一个用PL/pgSQL编写的过程,它将“行集合”之类的参数作为参数,我的意思是我需要传递给函数一个类似字典的结构:
伪码:
function_name({key1:val1,key2:val2, key3:val3 [, ...] })
最佳答案
用现代的PostgreSQL你可以简化这样一个函数。
测试设置:
CREATE TABLE tbl1 (id int, value text);
在这种情况下,不需要显式创建类型(如果该类型基于表行),它是为每个表隐式创建的。
功能:
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;
呼叫:
SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');
请注意行数组的输入语法!
关于arrays - PL/pgSQL行数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9640087/