以下是可能的吗?
我希望有一个用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/

10-11 16:56