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
Ïà¹ØÎÊ´ð£º
ÎÒÓÐÒ»¸ö±í£¬½á¹¹ÊÇÕâÑù¡£
ת³ö µ¥Î» תÈ뵥λ ±ÊÊý ½ð¶î
date(Ö÷) outid(Ö÷) inid(Ö÷) num amt
2009 1 2 1 500 Ϊ 1 µ¥Î» ÔÚ2009Ä ......
ÎÒÓÐÒ»¸öserver 2000ÀïµÄÊý¾Ý,ÏÖÔÚÏëתµ½oracleÊý¾Ý¿âÉÏÓÃ,²»ÖªµÀÓÐûÓиßÊÖÓмòµ¥ÓÖ¿ì½ÝµÄ·½·¨,ǰÌáÊDz»ÄܸÄÔÀ´oracleÀïµÄÔÓеÄÊý¾Ý¿â,Ö»ÄÜн¨
ÒýÓÃ
°²×°£Ï£Ò£Á£Ã£Ì£ÅµÄ£Ï£Ä£Â£Ã£¬È»ºóÓãӣѣ̡¡£Ó£Å£Ò£Ö£Å£ ......
ÎҵĴ¦ÀíÊÇÕâÑùµÄ£º
ÎÒÓÐÒ»¸öºÜ´óµÄÊý¾Ý¼¯ºÏ£¬´¦ÓÚÐÔÄÜ·½ÃæµÄ¿¼ÂÇÐèҪʹÓÃÁÙʱ±í¹ý¶É£¬²¢ÇÒʹÓ÷ÖÒ³µÄ·½Ê½ÏòÁÙʱ±íÖвåÈëÊý¾Ý£¬Êý¾ÝʹÓÃÍê±Ïºó£¬É¾³ýÁÙʱ±íµÄÊý¾Ý¡£
³öÏÖµÄÏÖÏ󣺵±OracleÖØÐÂÆô¶¯ºó£¬µÚÒ»Ò³²åÈëµÄ ......