oracle³õѧÕßÄãÇë½Ì - Oracle / »ù´¡ºÍ¹ÜÀí
--½¨Á¢Ò»¸ö°üÒÔ¶¨ÒåÒ»¸öÓαê
create or replace package PK_test
as
type cur_test is ref cursor;
end PK_test;
--½¨Á¢Ò»¸ö¹ý³Ì,ͨ¹ýÊäÈëJOBID£¬·µ»ØÒ»¸ö±í¼Ç¼£¨Óα꣩!
create or replace procedure PR_TEST_CURSOR
(JOBID IN VARCHAR2,cur_test out pk_test.cur_test)
as
begin
open cur_test for select ENAME,JOB from emp where JOB=JOBID;
end;
--ͨ¹ý¹ý³Ìµ÷ÓÃÉú³ÉÓαê(ºìÉ«²¿·Ö£©£¬²¢ÀûÓÃÓαê´òÓ¡.
declare
type t_name is table of scott.emp.ename%type;
type t_job is table of scott.emp.job%type;
cr_test pk_test.cur_test;
e_name t_name;
e_job t_job;
begin
--open cr_test for select ename,job from emp where job='MANAGER';
PR_TEST_CURSOR('MANAGER',cr_test);
fetch cr_test BULK COLLECT
INTO e_name, e_job;
CLOSE cr_test;
for i in e_name.first..e_name.last loop
dbms_output.put_line(e_name(i)||e_job(i));
end loop;
end;
/*
ÎÊÌ⣺ÒÔÉϵ÷ÓÃÊÇÓÐÎÊÌâµÄ,ÎÞ·¨Ê¹Ó㬱¾ÈËÊdzõѧÕߣ¬¾õµÃÕâÑùµÄµ÷ÓÃÓ¦¸ÃÊÇûÎÊÌâµÄ°É£¡
Çë´ó¼Ò°ïæ½âÎò£¡
*/
fetch cr_test BULK COLLECT
INTO e_name, e_job;
ÕâÀïÓ¦¸ÃÓÃpl/sql±í£¬Ò»¸ö±äÁ¿Ò»´ÎÖ»ÄܽÓÊÕÒ»¸öÖµ£¬²»ÄÜfetch BULK COLLECT
Ïà¹ØÎÊ´ð£º
´ó¼ÒºÃ,ÎÒÏÖÔÚ°Ñoracle·þÎñÆ÷ÉÏÃæµÄÔʼÎļþ,ÏÂÔص½±¾»úÁË.ÎÒÏëÔÚ±¾»ú·ÃÎÊÊý¾Ý¿âÔõôÉèÖð¡.ÊDz»ÊÇÀàËÆ¿ÉÒÔ½¨Á¢Ò»¸öʲôÐéÄâ·þÎñÆ÷À´ÊµÏÖ.Çë´ó¼Ò³ö³öÖ÷Òâ
ÒýÓÃ
´ó¼ÒºÃ,ÎÒÏÖÔÚ°Ñoracle·þÎñÆ÷ÉÏÃæ ......
ÔÚϵͳÔËÐеÄʱºò×ÜÊÇÓÐÒ»¿é´ÅÅÌʼÖÕÉÁºìµÆ£¬½øÈëϵͳºó
#topas²é¿´×ÜÊÇÓÐÒ»¿é´ÅÅÌ%BUSYΪ90%ÒÔÉÏ£¬
Êý¾Ý¿â°æ±¾£ºoracle 9.2.0.7
Êý¾ÝÎļþ¹ÒÔصĽڵ㣺/oradata/pcs/ Âß¼¾íºÅlv04
#lslv -l lv04
......
¼ÙÉètable01 ÖÐÓÐ ÒÔÏÂ×ÊÁÏ
emp_no emp_name
------- ------------
0001 TOM
0002 JOHN
0003 MARY
³£Óõ绰
¶øÎÒÃÇÒªµÃµ½ÒÔϵÄOUTPUT (»òÊǸ÷ÖÖÆäËûµÄoutput)
0001,TOM
0002,JOHN
......
ÎÒ°²×°ÁËoracle 10g¾¹ýÒ»·¬Å¬Á¦Äܹ»Ë³ÀûµÄÁ¬½ÓÉÏÁË£¬
µ«ÊÇÎÒÒÔÇ°ÓõÄÊÇsql server ËûµÄÆóÒµ¹ÜÀíÆ÷ÖÐÄܶԱí½øÐпÉÊÓ»¯¹ÜÀí
ÔÚoracleÖÐÎÒÒ²¿´µ½ÁËÓпÉÊÓ»¯µÄem
µ«ÊÇÎÒ¾ÍÊÇ¿´²»µ½±íµÄÄÚÈÝÀ´
ÇëÎÊÓÐûÓдóϺÄÜ°ï°ïà ......
¿´µ½ÓÐÒ»¸öSUNµÄÔªÀÏ´ÓOracle¹«Ë¾´ÇÖ°£¬¶øÇÒÊÇJava´´Ê¼ÈË——´óÃû¶¦¶¦µÄJames Gosling£¬
ÐÄÖÐÏ൱ÊÜ´ò»÷£¡ºÜ±¯Í´£¡
OrableÕâÊÇÔõôÁË£¬ÄѵÀÕâ¾ÍÊÇËùνµÄÈںϣ¨Ö«½â£¬·Ö»¯£¬Ïûʧ£©Âð£¿
SUNµÄÒ»°ïÀÏÔ±¹¤¶ ......