来自postgresql中另一个函数中返回的一个函数的值

时间:2016-04-08 08:46:43

标签: postgresql plpgsql

create or replace function sub_function()
returns text as $$
declare 
variable varchar(40);
begin
insert into tbl_admin (NAME,EMAIL,PASSWORD,LEVEL,AUTHENTICATION_KEY) values       ('karunya','karusuresh.s@gmail.com','password12',1,'');
variable=(select NAME from tbl_admin);
return variable;
end;
$$ language plpgsql;


create or replace function base_function()
returns text as $$
declare
variable1 text;
begin
create table if not exists tbl_admin(ADMIN_ID serial primary  key, NAME varchar(40),EMAIL text,PASSWORD text, LEVEL text,AUTHENTICATION_KEY text);
variable1=(select sub_function());
return null;
end;
$$ language plpgsql;

子函数正确插入但它没有返回名称。请给我一个解决方案。

1 个答案:

答案 0 :(得分:1)

这不是PL / pgSQL中变量赋值的完成方式。

  

variable=(select NAME from tbl_admin);

无法正常运作。您正在从表中选择所有行,但将其分配给单个变量。但是你只想要一个名字 - 我猜你刚刚插入的名字。你应该做这样的事情:

insert into tbl_admin 
  (NAME,EMAIL,PASSWORD,LEVEL,AUTHENTICATION_KEY) 
values 
  ('karunya','karusuresh.s@gmail.com','password12',1,'')
returning name into variable;

return variable;

这项任务也是错误的:

  

variable1=(select sub_function());

您只需要:

variable1 := sub_function();

如果确实想在那里使用选择,则需要使用into

select sub_function()
  into variable;

SQLFiddle示例:http://sqlfiddle.com/#!15/a344c/1