为postgres调用不同参数的存储过程

时间:2018-01-19 11:34:18

标签: postgresql stored-procedures

我已经在postgres中编写了一个存储过程来填充一些有关电话号码的统计信息

create or replace function PhoneNumberSummary(
    phonenumber varchar(255), 
    fromperiod timestamp without time zone, 
    toperiod timestamp without time zone
)

所以我想为不同的电话号码拨打相同的程序。我可以通过重新设计我的存储过程在单个调用中执行此操作,我的意思是变量参数列表。

有没有有效的方法来使用相同的存储过程?

2 个答案:

答案 0 :(得分:0)

我不知道我能清楚地理解你的问题。

基本上,它取决于函数的返回,以及变量参数列表的位置。 例如,您的变量参数列表位于表xyz上,如下所示。

phonenumber | time_start          | time_end
123         | 2018-01-01 13:00:00 | 2018-01-01 13:50:00
456         | 2018-01-01 20:00:00 | 2018-01-01 20:50:00

您可以将您的功能称为

SELECT (PhoneNumberSummary(t.phonenumber, t.time_start, t.time_end)).* FROM xyz t

希望我的回答能帮到你。

答案 1 :(得分:0)

您可以将输入参数定义为数组,这样您就可以使用函数在一个INSERT语句中插入多个行。

您可以构建一个多行INSERT - 语句并使用EXECUTE执行它。

我不确定这是否会提高性能,但您可以尝试运行性能测试。