关于SYS_REFCURSOR 类型为参数的 存储过程

WoKanBuDao 2016-10-27 09:45:34
CREATE OR REPLACE PROCEDURE RDM.SP_PDMR11E001_01_L01
(
P_LANG CHAR,
P_USER_ID CHAR,
P_USER_DEPT CHAR,
P_USER_ROLE CHAR,
P_FLAG CHAR,
P_CURSOR OUT SYS_REFCURSOR
)
IS

BEGIN

IF P_FLAG = '1' THEN -- MY PS

OPEN P_CURSOR FOR
SELECT
PSNO_DEPT || '-' || PSNO_YEAR || '-' || PSNO_SEQ PSNO,
FN_PLANT_NM(P_LANG, PS_PLANT) PS_PLANT,
FN_CODE_NM(P_LANG, 'PS_TY', PS_TYPE) PS_TYPE ,
FN_CODE_NM(P_LANG, 'PS_SJ', SUBJECT) SUBJECT ,
OBJECT ,
FN_DEPT_NM(P_LANG, ACC1_DEPT_CODE) RECV_DEPT1,
FN_DEPT_NM(P_LANG, ACC2_DEPT_CODE) RECV_DEPT2,
FN_CODE_NM(P_LANG, 'PSSTP', STEP) PS_STEP,
FN_DEPT_NM(P_LANG, PSNO_DEPT) PS_DEPT,
FN_USER_NM(P_LANG, INSERT_USER) USER_NM,
TO_CHAR(INSERT_DATE, 'YYYY-MM-DD HH24:MI:SS') INS_DATE,
FN_PS_BTN(P_USER_ID, '', P_USER_DEPT, P_USER_ROLE, STEP, INSERT_USER, PSNO_DEPT, ACC1_DEPT_CODE, ACC2_DEPT_CODE, ACC1_USERID, ACC2_USERID) PS_BTN,
STEP,
STATUS,
INSERT_USER
FROM PDMTR101
WHERE 1=1
-- AND PSNO_DEPT = P_USER_DEPT
AND INSERT_USER = P_USER_ID
AND STEP = '0'
AND STATUS = 'B'
ORDER BY PSNO_DEPT, PSNO_YEAR, PSNO_SEQ;

ELSIF P_FLAG = '2' THEN 。。。。下面还有

我的疑问是:
1. P_CURSOR OUT SYS_REFCURSOR 这个参数有什么用,我只知道是输出参数
2. OPEN P_CURSOR FOR sql语句的作用是什么,既然是执行sql语句,为什么还要加上 OPEN P_CURSOR FOR


...全文
199 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧