我正在使用
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变量将被赋予一个数字值示例:来自select to_number(…)查询的12502100.
但是我得到了以下错误
ERROR: syntax error at or near ":="
LINE 10: source :=(select code from buildings where name='I3')
如何将查询结果(带有一些字符串操作)分配给变量id?
我也使用Select Into id …方法失败了.
最佳答案 您不需要使用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,而不是用于函数或变量求值!