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; 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM