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;
子函数正确插入但它没有返回名称。请给我一个解决方案。
答案 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