2024年4月10日发(作者:)
4. exec strongly_(8);
2、弱类型游标:
[sql]
1. CREATE OR REPLACE PROCEDURE child (
2. p_NumRecs IN PLS_INTEGER,
3. p_return_cur OUT SYS_REFCURSOR)
4. IS
5.
6. BEGIN
7. OPEN p_return_cur FOR
8. 'SELECT * FROM all_tables WHERE rownum <= ' || p_NumRecs ;
9. END child;
10. /
11.
12. CREATE OR REPLACE PROCEDURE parent (pNumRecs VARCHAR2) IS
13. p_retcur SYS_REFCURSOR;
14. at_rec all_tables%ROWTYPE;
15. BEGIN
16. child(pNumRecs, p_retcur);
17.
18. FOR i IN 1 .. pNumRecs
19. LOOP
20. FETCH p_retcur
21. INTO at_rec;
22.
23. dbms__line(at__name ||
24. ' - ' || at_pace_name ||
25. ' - ' || TO_CHAR(at_l_extent) ||
26. ' - ' || TO_CHAR(at__extent));
27. END LOOP;
28. END parent;
29. /
30.
31. set serveroutput on
32.
33. exec parent(1);
34. exec parent(17);
3、预定义游标变量:
[sql]
1. CREATE TABLE employees (
2. empid NUMBER(5),
3. empname VARCHAR2(30));
4.
5. INSERT INTO employees (empid, empname) VALUES (1, 'Dan Morgan');
6. INSERT INTO employees (empid, empname) VALUES (2, 'Hans Forbrich');
7. INSERT INTO employees (empid, empname) VALUES (3, 'Caleb Small');
8. COMMIT;
9. CREATE OR REPLACE PROCEDURE pass_ref_cur(p_cursor SYS_REFCURSOR) IS
10.
11. TYPE array_t IS TABLE OF VARCHAR2(4000)
12. INDEX BY BINARY_INTEGER;
13.
14. rec_array array_t;
15.
16. BEGIN
17. FETCH p_cursor BULK COLLECT INTO rec_array;
18.
19. FOR i IN rec_ .. rec_
20. LOOP
21. dbms__line(rec_array(i));
22. END LOOP;
23. END pass_ref_cur;
24. /
25. set serveroutput on
26.
27. DECLARE
28. rec_array SYS_REFCURSOR;
29. BEGIN
30. OPEN rec_array FOR
31. 'SELECT empname FROM employees';
32.
33. pass_ref_cur(rec_array);
34. CLOSE rec_array;
35. END;
36. /
发布者:admin,转转请注明出处:http://www.yc00.com/news/1712758473a2117398.html
评论列表(0条)