23 01, 2009

oracleÏÂÇÉÓÃbulk collectʵÏÖcursorÅúÁ¿fetchµÄsqlÓï¾ä

oracleÏÂÇÉÓÃbulk collectʵÏÖcursorÅúÁ¿fetchµÄsqlÓï¾ä,ʹÓÃoracelµÄÅóÓÑ¿ÉÒÔÊÔÊÔÁË
CODE:

declare
cursor c1 is select * from t_depart;
v_depart t_depart%rowtype ;
type v_code_type is table of t_depart.depart_code%type ;
v_code v_code_type ;
type v_name_type is table of t_depart.depart_name%type ;
v_name v_name_type ;
begin
open c1;
fetch c1 bulk collect into v_code , v_name ;
for i in 1..v_code.count loop
dbms_output.put_line(v_code(i)||' '||v_name(i));
end loop;
close c1;
end;

ͨ¹ýÉÏÃæµÄÕâ¸öÁÐ×Ó´ó¼Ò¿ÉÒÔ·¢ÏÖÈç¹ûÁкܶàµÄ»°£¬ÎªÃ¿Ò»Áж¨ÒåÒ»¸ö¼¯ºÏËÆºõÓÐЩ·±Ëö£¬¿ÉÒ԰Ѽ¯ºÏºÍ%rowtype½áºÏÆðÀ´Ò»ÆðʹÓüò»¯³ÌÐò£¡

declare
cursor c1 is select * from t_depart;
type v_depart_type is table of t_depart%rowtype ;
v_depart v_depart_type ;
begin
open c1;
fetch c1 bulk collect into v_depart ;
for i in 1..v_depart.count loop
dbms_output.put_line(v_depart(i).depart_code||' '||
v_depart(i).depart_name);
end loop;
close c1;
end;

ÔÚÊä³ö½á¹ûʱ¼È¿ÉÒÔʹÓü¯ºÏµÄcountÊôÐԺͿÉÒÔʹÓÃfirstºÍlast£¬ÔÚÒýÓÃ%rowtypeÀàÐ͵ÄÄÚÈÝʱ»¹ÓÐÒ»¸öÐèҪעÒâµÄµØ·½ÊÇv_depart(i).depart_code£¬¶ø²»ÊÇv_depart.depart_code(i),µ±È»Ã»ÓÐÕâÑùµÄд·¨£¬¼´Ê¹ÓÐÒâÒåÒ²²¢²»Ò»Ñù¡£

declare
cursor c1 is select * from t_depart;
type v_depart_type is table of t_depart%rowtype ;
v_depart v_depart_type ;
begin
open c1;
fetch c1 bulk collect into v_depart ;
for i in v_depart.first..v_depart.last loop
dbms_output.put_line(v_depart(i).depart_code||' '||
v_depart(i).depart_name);
end loop;
close c1;
end;

23 01, 2009

´ø limit µÄ Bulk Collect µÄÒ»¸ö¼òµ¥Àý×Ó

ÉÏһƪ / ÏÂһƪ 2006-10-17 00:00:00 / ¸öÈË·ÖÀࣺMy Oracle Article

 ²é¿´È«ÎÄ

23 01, 2009

Oracle¶àÁ£¶È·âËø»úÖÆÑо¿

itpub һλ¸ßÊÖËù×ö

http://tech.it168.com/Resource/2007-07-16/5760.shtml


23 01, 2009

OracleÖеÄÊý¾ÝËø¶¨»úÖÆÈ«Ãæ½âÎö1

xanadu_xue ÕûÀí ¸üУº2007-10-30 14:53:38 °æ±¾: 1.0 ²é¿´È«ÎÄ

23 01, 2009

¾ÍÕâÑù¼òµ¥µØÀí½â£º

TM ÊǶÔÏóËø£¬±íʾ¿ÉÄÜÔÚÕâ¸ö¶ÔÏóÉÏ×öÁËʲô²Ù×÷£¬»¹Ã»ÓнáÊø£¬ËùÒÔ²»ÔÊÐíddl¡£update 0 Ìõ¼Ç¼£¬ÒòÎªËø¶¨·¢ÉúÔÚÕæÊµÐ޸ķ¢Éú֮ǰ£¬²»ÖªµÀ»áÐ޸ĶàÉټǼ£¬ËùÒÔtmÏȲúÉúÁË£¬½á¹ûȴûÓиüе½ÈκμǼ£¬Ò²¾ÍûʹÓûعö¶Î£¬ÓÚÊÇûÓÐtx²úÉú

TX ÊÇÊÂÎñËø£¬±íʾ·¢ÆðÁËÒ»¸ö ÊÂÎñ£¬·¢ÆðÊÂÎñµÄÅбð±ê×¼£¬ÊǸù¾Ý ÊÇ·ñʹÓûعö¶ÎÖÐ×÷ΪÆÀÅбê×¼µÄ¡£

Ò²¾ÍÊÇ˵£¬TM ±íʾÄãËø¶¨ÁËϵͳÖеÄÒ»¸ö¶ÔÏ󣬶ÔÓÚÊý¾Ý¿âϵͳ±íÀ´Ëµ ¿ÉÒÔ¿´×÷Ëø¶¨ÁË Ò»¸öobjectµÄ¼Ç¼±ðÈ˲»ÄܶÔÕâ¸öobjectµÄ¼Ç¼½øÐРɾ³ýºÍÐ޸ġ£
¶øtxÄØ£¬ÊÇÒԻعö¶ÎµÄʹÓÃ×÷Ϊ±ê×¼µÄ£¬Í¨³£Çé¿öÏ£¬Ê¹ÓÃÁ˻عö¶Î¾ÍÉæ¼°µ½ÁË ¼Ç¼ÐУ¬ÎÒÃÇϰ¹ßÉÏÈÏΪÊǼǼ·¢ÉúÁ˱仯£¨²åÈë¡¢Ð޸ġ¢É¾³ý£©¡£




ÈçÏ£¬ÎÒÃÇ·¢ÆðÒ»¸öÊÂÎñ£¬Ã»ÓÐÐÞ¸ÄÈκμǼ£¬µ«ÊÇÒѾ­Ê¹ÓÃÁ˻عö¶Î£¬Ôڻعö¶ÎÊÂÎï±íÖоÍÄÜÕÒ×żÇ¼ÁË¡£

alibaba@OCN>exec dbms_output.put_line( dbms_transaction.local_transaction_id(true) );
2.15.233291

PL/SQL procedure successfully completed.

alibaba@OCN>select * from v$lock;

ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
70405DE4 70405DF4 2 MR 203 0 4 0 970527 0
70405D98 70405DA8 2 MR 202 0 4 0 970527 0
70405D4C 70405D5C 2 MR 201 0 4 0 970527 0
70405D00 70405D10 2 MR 35 0 4 0 970527 0
70405CB4 70405CC4 2 MR 34 0 4 0 970527 0
70405C68 70405C78 2 MR 33 0 4 0 970527 0
70405C1C 70405C2C 2 MR 32 0 4 0 970527 0
70405BD0 70405BE0 2 MR 31 0 4 0 970527 0
70405B84 70405B94 2 MR 30 0 4 0 970527 0
70405B38 70405B48 2 MR 29 0 4 0 970527 0
70405AEC 70405AFC 2 MR 28 0 4 0 970527 0
70405AA0 70405AB0 2 MR 27 0 4 0 970527 0
70405A44 70405A54 2 MR 26 0 4 0 970527 0
704059F8 70405A08 2 MR 25 0 4 0 970527 0
704059AC 704059BC 2 MR 24 0 4 0 970527 0
70405960 70405970 2 MR 23 0 4 0 970527 0
70405914 70405924 2 MR 22 0 4 0 970527 0
704058C8 704058D8 2 MR 21 0 4 0 970527 0
7040587C 7040588C 2 MR 20 0 4 0 970527 0
70405830 70405840 2 MR 19 0 4 0 970527 0
704057E4 704057F4 2 MR 18 0 4 0 970527 0
70405798 704057A8 2 MR 17 0 4 0 970527 0
7040574C 7040575C 2 MR 16 0 4 0 970527 0
70405700 70405710 2 MR 15 0 4 0 970527 0
704056B4 704056C4 2 MR 14 0 4 0 970527 0
70405668 70405678 2 MR 13 0 4 0 970527 0
7040561C 7040562C 2 MR 12 0 4 0 970527 0
704055D0 704055E0 2 MR 11 0 4 0 970527 0
70405584 70405594 2 MR 10 0 4 0 970527 0
70405538 70405548 2 MR 9 0 4 0 970527 0
704054EC 704054FC 2 MR 8 0 4 0 970527 0
704054A0 704054B0 2 MR 7 0 4 0 970527 0
70405454 70405464 2 MR 6 0 4 0 970527 0
70405408 70405418 2 MR 5 0 4 0 970527 0
704053BC 704053CC 2 MR 3 0 4 0 970527 0
70405370 70405380 2 MR 2 0 4 0 970527 0
70405324 70405334 2 MR 1 0 4 0 970527 0
70405240 70405250 3 RT 1 0 6 0 970529 0
70405110 70405120 4 XR 4 0 1 0 970532 0
7040528C 7040529C 5 TS 2 1 3 0 970525 0
70CF4C44 70CF4D50 44 TX 131087 233291 6 0 7 0

41 rows selected.

alibaba@OCN>desc v$transaction
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
ADDR RAW(4)
XIDUSN NUMBER
XIDSLOT NUMBER
XIDSQN NUMBER
UBAFIL NUMBER
UBABLK NUMBER
UBASQN NUMBER
UBAREC NUMBER
STATUS VARCHAR2(16)
START_TIME VARCHAR2(20)
START_SCNB NUMBER
START_SCNW NUMBER
START_UEXT NUMBER
START_UBAFIL NUMBER
START_UBABLK NUMBER
START_UBASQN NUMBER
START_UBAREC NUMBER
SES_ADDR RAW(4)
FLAG NUMBER
SPACE VARCHAR2(3)
RECURSIVE VARCHAR2(3)
NOUNDO VARCHAR2(3)
PTX VARCHAR2(3)
NAME VARCHAR2(256)
PRV_XIDUSN NUMBER
PRV_XIDSLT NUMBER
PRV_XIDSQN NUMBER
PTX_XIDUSN NUMBER
PTX_XIDSLT NUMBER
PTX_XIDSQN NUMBER
DSCN-B NUMBER
DSCN-W NUMBER
USED_UBLK NUMBER
USED_UREC NUMBER
LOG_IO NUMBER
PHY_IO NUMBER
CR_GET NUMBER
CR_CHANGE NUMBER

alibaba@OCN>select XIDUSN ,XIDSLOT ,XIDSQN from v$transaction;

XIDUSN XIDSLOT XIDSQN
---------- ---------- ----------
2 15 233291
TMºÍTX¶¼ÊÇdml lockµÃÒ»ÖÖ£º
µ±Äã½øÐÐÒ»°ãµÃupdate £¬delete ¡£¡£¡£¾Í»á²úÉúTX lock£¬Í¬Ê±»¹°éËæÒ»¸ö tm lock£¨±£»¤£¬²»±»Ò»Ð©ddlÓï¾äÆÆ»µ¶ÔÏóµÃ¶¨Ò壩
ÿ¸öÊÂÎñÖ»»á»ñµÃÒ»¸ö tx lock£¬µ«ÊÇÔÚÿһ¸öÊÜÓ°ÏìµÃobjectÉ϶¼»á²úÉúÒ»¸ötm lock

¿ÉÒÔ¿´¿´ tomµÃ¸ß¼¶±à³ÌÖУº lock and concurrency ²¿·Ö
http://www.itpub.net/viewthread.php?tid=321679&extra=&page=1