Postgresql为函数中的变量分配一个select查询

时间:2013-10-09 08:43:17

标签: function postgresql variables

我正在使用Postgresql 9.3并编写了如下函数:

    create or replace function test(building text,floor text) returns void as $$
    Declare
    id integer;
    num integer := 0;
    Begin

    num=num+100

    id :=select to_number(
          (select 
              (select code from buildings where name=building) || floor 
              || (select num::text)),'99999999'
    );

    update table set col1=id;

    End;
    $$
    language plpgsql;

我希望我的id变量会从example: 12502100查询中分配一个数值select to_number(...)

但是我收到了以下错误

ERROR:  syntax error at or near ":="
LINE 10: source :=(select code from buildings where name='I3')

如何将查询结果(带有一些字符串操作)分配到变量id?

我的Select Into id...方法也失败了。

1 个答案:

答案 0 :(得分:2)

您无需使用SELECT进行功能评估。

id := to_number((SELECT code FROM buildings WHERE name = building) 
                                                      || floor || num::text,
                '999999999');

其他可能性(通常更好)是在表达式列表中使用函数(结果字段列表)

id := (SELECT to_number(code || floor || num::text, '99999999') 
          FROM buildings WHERE name = building)

仅在需要查询数据时使用SELECT,而不是用于函数或变量评估!