Oracle使用存储过程返回查询游标
2024-09-04 06:17:57
如果报表逻辑非常复杂的话, 可以把报表逻辑放到存储过程里,加工一个全局临时表。
前端查询的时候只查询临时表即可。只是第一次查询需要忍受加工的时间。
--创建存储过程,返回SYS_REFCURSOR
CREATE OR REPLACE PROCEDURE P_GET_AGENT(V_AGENT_CATE IN VARCHAR2,
V_PAGE IN INTEGER,
O_CURSOR OUT SYS_REFCURSOR) IS
BEGIN
INSERT INTO TMP_TAB_T_AGENT(AGENT_ID)
SELECT AGENT_ID FROM T_AGENT TA WHERE TA.AGENT_CATE = V_AGENT_CATE; OPEN O_CURSOR FOR
SELECT AGENT_ID
FROM (SELECT ROWNUM AS RN, AGENT_ID
FROM (SELECT AGENT_ID FROM TMP_TAB_T_AGENT ORDER BY AGENT_ID)
WHERE ROWNUM < V_PAGE * 10)
WHERE RN >= (V_PAGE - 1) * 10;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('wrong');
END; --调用存储过程,
DECLARE
V_CURSOR SYS_REFCURSOR;
V_AGENT_ID T_AGENT.AGENT_ID%TYPE;
BEGIN
-- Call the procedure
P_GET_AGENT(V_AGENT_CATE => '5', V_PAGE => 4, O_CURSOR => V_CURSOR); LOOP
FETCH V_CURSOR
INTO V_AGENT_ID;
EXIT WHEN V_CURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(V_AGENT_ID);
END LOOP; CLOSE V_CURSOR;
COMMIT;
END;
最新文章
- java--UDP屏幕广播代码
- mysql 查看存储引擎的状态 show engine innodb status 详解
- 【知识点】业务连接服务(BCS)认证概念整理
- Python求算数平方根和约数
- redo文件二
- 转:linux的源码查看, c++语法 查看网站
- C# 实现对窗体(Form)换肤
- MFC 窗口重绘问题
- UML学习(一)类图和对象图
- python中input()与raw_input()的区别到底是啥?-----marsggbo原创作品为你解答
- iOS安全攻防之越狱设备检测
- Vue源码后记-其余内置指令(1)
- GO语言从入门到放弃目录
- zeebe 集成elasticsearch exporter
- 【CSS学习】--- 文本水平对齐属性text-align和元素垂直对齐属性vertical-align
- Unity调用安卓Android的Toast
- 解题:CF1055F Tree and XOR
- js:Date格式化
- PHP实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)的绑定
- [转载]利用近场探头和频谱仪查找EMI辐射问题