【发布时间】:2015-03-06 08:44:05
【问题描述】:
我的最后一个问题Passing an array to stored to postgres 有点不清楚。现在,澄清我的目标:
我想创建一个接受两个输入参数的 Postgres 存储过程。一个是一些金额的列表,例如(100, 40.5, 76),另一个是一些发票 ('01-2222-05','01-3333-04','01-4444-08')的列表。之后,我想使用这两个数字和字符列表并用它们做一些事情。例如,我想从这个数字数组中取出每个金额并将其分配给相应的发票。
Oracle 中的类似内容如下所示:
SOME_PACKAGE.SOME_PROCEDURE (
789,
SYSDATE,
SIMPLEARRAYTYPE ('01-2222-05','01-3333-04','01-4444-08'),
NUMBER_TABLE (100,40.5,76),
'EUR',
1,
P_CODE,
P_MESSAGE);
当然,SIMPLEARRAYTYPE 和 NUMBER_TABLE 这两种类型在前面的 DB 中已经定义好了。
【问题讨论】:
-
究竟有什么不清楚的地方?如何调用这些函数?您可以使用数组构造函数 postgresql.org/docs/current/static/… 或者,您可以将它们的输入表示形式写入字符串(然后可选地使用强制转换)postgresql.org/docs/current/static/arrays.html#ARRAYS-IO
-
我不知道如何使用这些输入参数创建存储过程。
-
这也包含在您之前的问题中(例如 stackoverflow.com/questions/27708234/… )——您可以使用标准兼容的
<type> ARRAY或 PostgreSQL 特定的<type>[]语法。 postgresql.org/docs/current/static/…
标签: arrays postgresql arraylist plpgsql set-returning-functions