postgresql 存储过程返回结果集

最近因为工作需要写了个登录校验函数,话不多说,贴代码,因为只是一个简单的介绍用法,所以核心判断我就全部去掉了。

//最先要求是只返回一个用户id,于是简单的returns integer就可以完成。

 

CREATE OR REPLACE FUNCTION validate_user()
RETURNS integer AS
$BODY$
DECLARE i integer;
begin

return i;

end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

 

-- 后面更改了需求,要求返回表中一行的值,所以我就使用了游标,不过后获取游标的值太过麻烦,所以又修改了一次。

CREATE OR REPLACE FUNCTION validate_user()
RETURNS refcursor AS
$BODY$
declare user_list refcursor;
begin 
open user_list for select * from tb_user where email = usernameTe and state=1;
return user_list;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

 

 

 //下面是标准的pg/sql的写法 

 

CREATE OR REPLACE FUNCTION validate_user()
RETURNS setof tb_user AS
$BODY$
declare user_list tb_user;
begin 
for user_list in select * from tb_user where email = usernameTe and userpwd= passwordTe and state=1 loop 
return next user_list;
end loop;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

 

 

//还有一种写法是直接select,这里就不贴出来了,判断成功之后直接使用select语句就行,无需返回值。 

 

//后面需要增加一个参数返回判断情况,所以我这里使用了out输出,也是比较灵活。输出参数前缀加T是因为我所使用的psql版本变量不可以冲突。

--output参数使用

CREATE OR REPLACE FUNCTION validate_user(usernamete text, passwordte text,out Tuserid int,out Tpassword text,out Tusername text,out Tcompid int,out Trole int,out Terrcode int)
AS
$BODY$
begin 
select userid,userpwd,username,compid,role,0 from tb_user where email = usernamete and state=1 into $3,$4,$5,$6,$7,$8;
return;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100; 

 


 

转载于:https://www.cnblogs.com/woca/p/4563827.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值