PLSQL Table Collection Cursor Variable
来源:互联网 发布:mac书名号怎么打出来 编辑:程序博客网 时间:2024/05/21 11:33
SELECT * FROM TEST02; A B C---------- ---------- ----------1 EMP 79342 DEPT 10
CREATE OR REPLACE PACKAGE PAC2IS/*************************************************//* テーブルファンクションの行のレコード型 *//*************************************************/ TYPE REC_TYPE IS RECORD ( A VARCHAR2(20), B VARCHAR2(20), C VARCHAR2(20), D VARCHAR2(20));/*************************************************//* そのレコード型のコレクション *//*************************************************/ TYPE REC_TAB_TYPE IS TABLE OF REC_TYPE;/**************************************************//* そのコレクションを返すテーブルファンクション *//**************************************************/ FUNCTION F2 (P_CURSOR IN SYS_REFCURSOR) RETURN REC_TAB_TYPE PIPELINED;END PAC2;/
CREATE OR REPLACE PACKAGE BODY PAC2IS/**************************************************//* テーブルファンクション F2の定義 *//**************************************************/ FUNCTION F2 (P_CURSOR IN SYS_REFCURSOR) RETURN REC_TAB_TYPE PIPELINED IS -- テーブルファンクションの行レコード REC REC_TYPE; -- カーソルの行のA列、B列、C列の変数 V_A VARCHAR2(20); V_B VARCHAR2(20); V_C VARCHAR2(20); -- 追加したD列の変数 V_D VARCHAR2(20); BEGIN LOOP -- 以下の処理を繰り返す FETCH P_CURSOR INTO V_A, V_B, V_C; -- カーソル変数から1行フェッチ EXIT WHEN P_CURSOR%NOTFOUND; -- フェッチして行がなければ繰り返しを終える -- フェッチした各列の値をテーブル・ファンクションの行レコードにセット REC.A := V_A; REC.B := V_B; REC.C := V_C; -- D列の値は、場合によりEMP表やDEPT表から取得 IF V_B = 'EMP' THEN SELECT ENAME INTO V_D FROM EMP WHERE EMPNO = V_C; ELSE SELECT DNAME INTO V_D FROM DEPT WHERE DEPTNO = V_C; END IF; REC.D := V_D; PIPE ROW(REC); -- 行レコードをパイプを通して返す END LOOP; RETURN; -- 上記の繰り返し処理が終わったらファンクションを終える END F2;END PAC2;/
SELECT * FROM TABLE(PAC2.F2(CURSOR(SELECT * FROM TEST02))); A B C D---------- ---------- ---------- --------------------1 EMP 7934 MILLER2 DEPT 10 ACCOUNTING
0 0
- PLSQL Table Collection Cursor Variable
- PLSQL collection 示例 之 index-by table
- PLSQL collection 示例 之 index-by table
- PL/SQL 表函数, Cursor Variable, pipelined table function
- PLSQL Collection
- cursor variable 实例
- Is there a way to loop through a table variable in TSQL without using a cursor?
- PLSQL 明示Cursor
- PLSQL 明示Cursor 2
- PLSQL Cursor For Loop
- PLSQL Cursor ROWTYPE TYPE
- PLSQL Collection Sort
- PLSQL Collection Check Existence
- PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor区别
- PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor区别
- PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor区别
- PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor
- PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor
- requirejs入门
- python进阶12:单下划线与双下划线(私有和保护)
- Android事件传递机制
- 第四十一章 SpringBoot SpringMVC配置
- adb命令填充空间
- PLSQL Table Collection Cursor Variable
- androidStudio使用eclipse的快捷键
- Oracle 用户(user)和模式(schema)的区别
- 分组函数group by用法
- 第四十二章 SpringBoot注册Servlet/Filter/Listener
- JDK核心JAVA源码解析(1)
- (第六章)白盒测试用例设计技术
- 关于Qt、Qt/E、Qtopia、qvfb、framebuffer、qpe等概念的对比介绍
- C++时间标准库时间time和系统时间的使用