最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Usingoforaclerefcursor

来源:动视网 责编:小采 时间:2020-11-09 07:48:07
文档

Usingoforaclerefcursor

Usingoforaclerefcursor:1、强类型游标: CREATE OR REPLACE PACKAGE strongly_typed ISTYPE return_cur IS REF CURSOR RETURN all_tables%ROWTYPE;PROCEDURE child(p_return_rec OUT return_cur);PROCEDURE parent(p_NumR
推荐度:
导读Usingoforaclerefcursor:1、强类型游标: CREATE OR REPLACE PACKAGE strongly_typed ISTYPE return_cur IS REF CURSOR RETURN all_tables%ROWTYPE;PROCEDURE child(p_return_rec OUT return_cur);PROCEDURE parent(p_NumR


1、强类型游标: CREATE OR REPLACE PACKAGE strongly_typed ISTYPE 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

1、强类型游标:

CREATE OR REPLACE PACKAGE strongly_typed IS

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);

2、弱类型游标:

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);

3、预定义游标变量:

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, 'Hans Forbrich');
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;
/

-----------------------------------------------------

Dylan presents.

文档

Usingoforaclerefcursor

Usingoforaclerefcursor:1、强类型游标: CREATE OR REPLACE PACKAGE strongly_typed ISTYPE return_cur IS REF CURSOR RETURN all_tables%ROWTYPE;PROCEDURE child(p_return_rec OUT return_cur);PROCEDURE parent(p_NumR
推荐度:
标签: 类型 oracle ref
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top