examples for oracle ref cursors
TYPE return_cur IS REF CURSOR RETURN all_tables%ROWTYPE;
PROCEDURE child(p_return_rec OUT return_cur); PROCEDURE parent(p_NumRecs PLS_INTEGER); |
END strongly_typed;
/
CREATE OR REPLACE PACKAGE BODY strongly_typed IS
PROCEDURE child(p_return_rec OUT return_cur) IS BEGIN OPEN p_return_rec FOR SELECT * FROM all_tables; END child; |
PROCEDURE parent (p_NumRecs PLS_INTEGER) IS p_retcur return_cur; at_rec all_tables%ROWTYPE; BEGIN child(p_retcur); FOR i IN 1 .. p_NumRecs LOOP FETCH p_retcur INTO at_rec; dbms_output.put_line(at_rec.table_name || ' - ' || at_rec.tablespace_name || ' - ' || TO_CHAR(at_rec.initial_extent) || ' - ' || TO_CHAR(at_rec.next_extent)); END LOOP; END parent; |
END strongly_typed;
/
set serveroutput on
exec strongly_typed.parent(1)
exec strongly_typed.parent(8)
CREATE OR REPLACE PROCEDURE child (
p_NumRecs IN PLS_INTEGER,
p_return_cur OUT SYS_REFCURSOR)
IS
BEGIN
OPEN p_return_cur FOR
'SELECT * FROM all_tables WHERE rownum <= ' || p_NumRecs ;
END child;
/
CREATE OR REPLACE PROCEDURE parent (pNumRecs VARCHAR2) IS
p_retcur SYS_REFCURSOR;
at_rec all_tables%ROWTYPE;
BEGIN
child(pNumRecs, p_retcur);
FOR i IN 1 .. pNumRecs
LOOP
FETCH p_retcur
INTO at_rec;
dbms_output.put_line(at_rec.table_name ||
' - ' || at_rec.tablespace_name ||
' - ' || TO_CHAR(at_rec.initial_extent) ||
' - ' || TO_CHAR(at_rec.next_extent));
END LOOP;
END parent;
/
set serveroutput on
exec parent(1)
exec parent(17)
CREATE TABLE employees (
empid NUMBER(5),
empname VARCHAR2(30));
INSERT INTO employees (empid, empname) VALUES (1, 'Dan Morgan');
INSERT INTO employees (empid, empname) VALUES (2, 'Jack Cline');
INSERT INTO employees (empid, empname) VALUES (3, 'Caleb Small');
COMMIT;
CREATE OR REPLACE PROCEDURE pass_ref_cur(p_cursor SYS_REFCURSOR) IS TYPE array_t IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER; rec_array array_t; BEGIN FETCH p_cursor BULK COLLECT INTO rec_array; FOR i IN rec_array.FIRST .. rec_array.LAST LOOP dbms_output.put_line(rec_array(i)); END LOOP; END pass_ref_cur; / |
set serveroutput on
DECLARE
rec_array SYS_REFCURSOR;
BEGIN
OPEN rec_array FOR
'SELECT empname FROM employees';
pass_ref_cur(rec_array);
CLOSE rec_array;
END;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242290/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle:open_cursorsOracle
- Oracle檢視已被使用的open_cursors&session_cached_cursorsOracleSession
- VirtualHost Examples
- simd examples
- crewAI-examplesAI
- gitglossary learning by examplesGit
- css23 CSS Links, CursorsCSS
- "bare repository" learning by examples
- ref
- airflow DAG/PIPELINE examples referenceAI
- Ten examples of git-archiveGitHive
- Spring中ref local=""與ref bean=""的區別SpringBean
- [20181220]ORA-1000 "maximum open cursors exceeded".txt
- vue --ref用法Vue
- ref屬性
- ref和reactiveReact
- zero-shot-learning-definition-examples-comparison
- 【CURSOR】How to Monitor and tune Open and Cached Cursors (Doc ID 1430255.1)
- Rust 中 *、&、mut、&mut、ref、ref mut 的用法和區別Rust
- React ref的用法React
- 使用 ref 引用值
- cannot find trajectory file at ./examples/trajectory.txt
- 【Basic Abstract Algebra】Exercises for Section 2.1 — Definitions and examples
- Vue 學習 Ref shallowRef triggerRef customRef (Ref 和 Reactive的對比)VueReact
- 關於React的refReact
- React ref 的前世今生React
- Difference between cursor and a ref cursor
- React ref的基本使用React
- basictracer-go原始碼閱讀——examples(完結)Go原始碼
- MIT6.S081 - Lecture1: Introduction and ExamplesMIT
- [20180822]session_cached_cursors與子游標堆0.txtSession
- vue中的 ref 和 $refsVue
- python ref counting based garbage collectionPython
- v2.5.4,changelog:add examples in json schema 例子沒找到JSON
- out,ref,params引數傳遞
- 組合API-ref屬性API
- 組合API-ref函式API函式
- std::bind與std::ref, why and how