oracle cursor ÓαêÓ÷¨
Óα꣺
ÓÃÀ´²éѯÊý¾Ý¿â£¬»ñÈ¡¼Ç¼¼¯ºÏ£¨½á¹û¼¯£©µÄÖ¸Õ룬¿ÉÒÔÈÿª·¢ÕßÒ»´Î·ÃÎÊÒ»Ðнá¹û¼¯£¬ÔÚÿÌõ½á¹û¼¯ÉÏ×÷²Ù×÷¡£
·ÖÀࣺ
¾²Ì¬Óα꣺
·ÖΪÏÔʽÓαêºÍÒþʽÓαꡣ
REFÓα꣺
ÊÇÒ»ÖÖÒýÓÃÀàÐÍ£¬ÀàËÆÓÚÖ¸Õë¡£
ÏÔʽÓα꣺
CURSOR ÓαêÃû ( ²ÎÊý ) [·µ»ØÖµÀàÐÍ] IS
Select Óï¾ä
ÉúÃüÖÜÆÚ£º
1.´ò¿ªÓαê(OPEN)
½âÎö£¬°ó¶¨¡£¡£¡£²»»á´ÓÊý¾Ý¿â¼ìË÷Êý¾Ý
2.´ÓÓαêÖлñÈ¡¼Ç¼(FETCH INTO)
Ö´Ðвéѯ£¬·µ»Ø½á¹û¼¯¡£Í¨³£¶¨Òå¾ÖÓò±äÁ¿×÷Ϊ´ÓÓαê»ñÈ¡Êý¾ÝµÄ»º³åÇø¡£
3.¹Ø±ÕÓαê(CLOSE)
Íê³ÉÓα괦Àí£¬Óû§²»ÄÜ´ÓÓαêÖлñÈ¡ÐС£»¹¿ÉÒÔÖØÐ´ò¿ª¡£
Ñ¡Ï²ÎÊýºÍ·µ»ØÀàÐÍ
set serveroutput on
declare
cursor emp_cur ( p_deptid in number) is
select * from employees where department_id = p_deptid;
l_emp employees%rowtype;
begin
dbms_output.put_line('Getting employees from department 30');
open emp_cur(30);
loop
fetch emp_cur into l_emp;
exit when emp_cur%notfound;
dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');
dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);
end loop;
close emp_cur;
dbms_output.put_line('Getting employees from department 90');
open emp_cur(90);
loop
fetch emp_cur into l_emp;
exit when emp_cur%notfound;
dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');
dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);
end loop;
close emp_cur;
end;
/
ÒþʽÓα꣺
²»ÓÃÃ÷È·½¨Á¢Óαê±äÁ¿£¬·ÖÁ½ÖÖ£º
1.ÔÚPL/SQLÖÐʹÓÃDMLÓïÑÔ£¬Ê¹ÓÃORACLEÌṩµÄÃûΪSQLµÄÒþʾÓαê
2.CURSOR FOR LOOP£¬ÓÃÓÚfor loop Óï¾ä
1¾ÙÀý£º
declare
begin
update departments set department_name=department_name;
--where 1=2;
dbms_output.put_line('update '|| sql%rowcount ||' records');
end;
/
2¾ÙÀý£º
declare
begin
for my_dept_rec in ( select department_name, department_id from departments)
loop
dbms_output.put_line(my_dept_rec.department_id || ' : ' || my_dept_rec.department_name);
end lo
Ïà¹ØÎĵµ£º
Ò».·ÖÎöº¯Êý2(rank\dense_rank\row_number)
Ŀ¼
===============================================
1.ʹÓÃrownumΪ¼Ç¼ÅÅÃû
2.ʹÓ÷ÖÎöº¯ÊýÀ´Îª¼Ç¼ÅÅÃû
3.ʹÓ÷ÖÎöº¯ÊýΪ¼Ç¼½øÐзÖ×éÅÅÃû
Ò»¡¢Ê¹ÓÃrownumΪ¼Ç¼ÅÅÃû£º
ÔÚÇ°ÃæÒ»Æª¡¶Oracle¿ª·¢×¨ÌâÖ®£º·ÖÎöº¯Êý¡·£¬ÎÒÃÇÈÏʶÁË·ÖÎöº¯ÊýµÄ»ù±¾Ó¦Óã¬ÏÖÔÚÎÒÃÇÔÙ ......
DBWn½ø³Ì¸ºÔð½«ÔàÊý¾Ý¿éдÈë´ÅÅÌ¡£ËüÊÇÒ»¸ö·Ç³£ÖØÒªµÄ½ø³Ì£¬Ëæ×ÅÄÚ´æµÄÔö¼Ó£¬Ò»¸öDBWn½ø³Ì¿ÉÄܲ»¹»ÓÃÁË¡£´Óoracle8iÆð£¬ÎÒÃÇ¿ÉÒÔΪϵͳÅäÖöà¸öDBWn½ø³Ì¡£³õʼ»¯²ÎÊýdb_writer_process¾ö¶¨ÁËÆô¶¯¶àÉÙ¸öDBWn½ø³Ì¡£Ã¿¸öDBWn½ø³Ì¶¼»á·ÖÅäÒ»¸öcache lru chain latch¡£
DBWn×÷Ϊһ¸öºǫ́½ø³Ì£¬ ......
OracleÊý¾Ý¿âÓÐÈýÖÖ±ê×¼µÄ±¸·Ý·½·¨£¬ËüÃÇ·Ö±ðÊǵ¼³ö£¯µ¼È루EXP/IMP£©¡¢Èȱ¸·ÝºÍÀ䱸·Ý¡£µ¼³ö±¸¼þÊÇÒ»ÖÖÂß¼±¸·Ý£¬À䱸·ÝºÍÈȱ¸·ÝÊÇÎïÀí±¸·Ý¡£
Ò»¡¢ µ¼³ö£¯µ¼È루Export£¯Import£©
ÀûÓÃExport¿É½«Êý¾Ý´ÓÊý¾Ý¿âÖÐÌáÈ¡³öÀ´£¬ÀûÓÃImportÔò¿É½«ÌáÈ¡³öÀ´µÄÊý¾ÝËͻص½OracleÊý¾Ý¿âÖÐÈ¥¡£
£±¡¢ ¼òµ¥µ¼³öÊý¾Ý£¨Export£©ºÍµ¼ÈëÊý¾ ......
ÈÔȻʹÓÃSCOTTÓû§À´²Ù×÷£º
1¡¢ ÏÔʾ¹¤×ʱȲ¿ÃÅ30µÄËùÓÐÔ±¹¤µÄ¹¤×ʶ¼¸ßµÄÔ±¹¤µÄÐÅÏ¢£º
Select * from emp where sal>all(select sal from emp where deptno=30);
2¡¢ ÏÔʾ¹¤×ʱȲ¿ÃÅ30µÄÈÎÒâÒ»¸öÔ±¹¤µÄ¹¤×ʸ߾ͿÉÒ ......
½ñÌìÉÏÎç²âÊÔÒ»¸ö·ÃÎÊORACLEµÄc++À࣬ÎĵµÉÏ˵Á¬½Ó×Ö·û´®µÄ¸ñʽΪ"Óû§Ãû/¿ÚÁî@Á¬½ÓÃû"£¬ÎÒ²»ÊÇÌ«Ã÷°×Á¬½ÓÃûµ½µ×ΪºÎÎÏÈÓÃIPµØÖ·ÊÔÁËÊÔ
£¬×ÜÊDZ¨´í£¬ËµÎÞ·¨½âÎöµÄÁ¬½Ó±êʶ·û£¬ºóÀ´ÔÚÍøÉϲéÁ˰ëÌ죬¿´µ½ÓиöÈË˵Á¬½ÓÃû¾ÍÊÇ$(ORACLE_HOME)/network/admin/tnsnames.oraÀﶨÒåµÄÊý¾Ý¿âÁ¬½ÓµÄÃû³Æ£¬ÊÔÁËһϣ¬¹ûÈ»Èç´Ë¡£ ......