oracle°üºÍREF CURSOR
Ê×ÏÈ£¬ÐèÒªÖØÐÂÕûÀíÒ»ÏÂÏà¹Ø¸ÅÄoracleÊý¾Ý¿âÖк¯ÊýµÄ×÷Óã¬ÊÇÖ»Äܱ»±ðÈ˵÷Ó㬴洢¹ý³Ì¿ÉÒÔµ¥¶ÀÖ´ÐУ¬²¢ÇÒ¿ÉÒÔµ÷Óô洢¹ý³Ì£¬¶ø°üµÄ×÷Óðü¿ÉÒÔ½«ÈκγöÏÖÔÚ¿éÉùÃ÷µÄÓï¾ä ( ¹ý³Ì , º¯Êý , Óαê , Óαê , ÀàÐÍ , ±äÁ¿ ) ·ÅÓÚ°üÖÐ , Ï൱ÓÚÒ»¸öÈÝÆ÷ . ½«ÉùÃ÷Óï¾ä·ÅÈë°üÖеĺô¦ÊÇ : Óû§¿ÉÒÔ´ÓÆäËû PL/SQL ¿éÖÐ¶ÔÆä½øÐÐÒýÓà , Òò´Ë°üΪ PL/SQL ÌṩÁËÈ«¾Ö±äÁ¿£¬°ü·ÖΪ°üÍ·ºÍ°üÌ壬°üÍ·ÏȱàÒëͨ¹ýºó²ÅÄܱàÒë°üÌå¡£
°üÍ·µÄ´´½¨£º
1) °üÍ· :
Óï·¨¸ñʽ :
CREATE OR REPLACE PACKAGE package_name /* °üÍ·Ãû³Æ */
IS|AS
pl/sql_package_spec /* ¶¨Òå¹ý³Ì , º¯ÊýÒÔ¼°·µ»ØÀàÐÍ , ±äÁ¿ , ³£Á¿¼°Êý¾ÝÀàÐͶ¨Òå */
¶¨Òå°üÍ·Ó¦µ±×ñÑÒÔÏÂÔÔò :
1) °üÔªËØÎ»ÖÿÉÒÔÈÎÒâ°²ÅÅ . È»¶øÔÚÉùÃ÷²¿·Ö , ¶ÔÏó±ØÐëÔÚÒýÓÃǰ½øÐÐÉùÃ÷ .
2) °üÍ·¿ÉÒÔ²»¶ÔÈκÎÀàÐ͵ÄÔªËØ½øÐÐ˵Ã÷ . ÀýÈç , °üÍ·¿ÉÒÔÖ»´ø¹ý³ÌºÍº¯Êý˵Ã÷Óï¾ä , ¶ø²»ÉùÃ÷ÈκÎÒì³£ºÍÀàÐÍ .
3) ¶Ô¹ý³ÌºÍº¯ÊýµÄÈκÎÉùÃ÷¶¼±ØÐëÖ»¶Ô×Ó³ÌÐòºÍÆä²ÎÊý½øÐÐÃèÊö , ²»ÄÜÓÐÈκδúÂëµÄ˵Ã÷ , ´úÂëµÄʵÏÖÖ»ÄÜÔÚ°üÌåÖгöÏÖ . Ëü²»Í¬ÓÚ¿éÉùÃ÷ , ÔÚ¿éÉùÃ÷ÖÐ , ¹ý³ÌºÍº¯ÊýµÄ´úÂë¿Éͬʱ³öÏÖÔÚÉùÃ÷²¿·Ö .
2. °üÌå :
Óï·¨¸ñʽ :
CREATE OR REPLACE PACKAGE BODY package_name/* °üÃû±ØÐëÓë°üÍ·µÄ°üÃûÒ»Ö */
IS | AS
pl/sql_package_body /* Óαê , º¯Êý , ¹ý³ÌµÄ¾ßÌ嶨Òå */
°üÌåÊÇÓë°üÍ·Ï໥¶ÀÁ¢µÄ , °üÌåÖ»ÄÜÔÚ°üÍ·Íê³É±àÒëºó²ÅÄܽøÐбàÒë . °üÌåÖдøÓаüÍ·ÖÐÃèÊöµÄ×Ó³ÌÐòµÄ¾ßÌåʵÏֵĴúÂë¶Î . ³ý´ËÖ®Íâ , °üÌ廹¿ÉÒÔ°üÀ¨¾ßÓаüÌåÈËÈ«¾äÊôÐԵĸ½¼ÓÉùÃ÷²¿·Ö , µ«ÕâЩ¸½¼ÓÉùÃ÷¶ÔÓÚ°üÍ·ÊDz»¼ûµÄ .
Demo:
****************
*°ü
****************
create or replace package mypack
as
type mytype is ref cursor return emp%rowtype; --ÉùÃ÷REFÓαê
function myemp(dno number) return mytype;
end;
****************
*body
****************
create or replace package body mypack
as
function myemp(dno
Ïà¹ØÎĵµ£º
create table tree_table
(
id number,
pId number,
orderNumber number,
name varchar2(255)
)
select tt.*
from tree_table tt
start with tt.pId = 0
connect by prior tt.id = ttd.pId
order siblings by orderNumber ......
ÒÔÍù´ÓÀ´Ã»ÓÐÏëÈ¥ÈÏÕæ¶ÁÒ»´ÎOracleµÄ°æÈ¨ÉùÃ÷£¬½ñÌì´ò¿ªOracle10gR2µÄÎĵµ£¬ÓÚÊǾÍË÷ÐÔ´ÓÍ·¿ªÊ¼¶ÁÒ»ÏÂÕâÆªÎÄÕ¡£
һЩÎÒÏë´ó¼Ò¶¼Ó¦¸ÃÈ¥ÖªµÀµÄ£¬ËäÈ»¹úÄڵİæÈ¨¸ÅÄîʵÔÚÊDZȽϵ±¡£¬µ«ÏëÀ´»áÔ½À´Ô½ºÃµÄ¡£
Oracle10g·ÖΪ4¸ö°æ±¾£¬·Ö±ðÊÇ£º
1¡£Oracle Database Standard Edition One£¬×î»ù±¾µÄÉÌÒµ°æ± ......
1.¼¤»îSQL¸ú×Ù
´Óoracle10gÒÔºóÌṩÁËÐµķ½·¨¼¤»îSQLµÄ¸ú×Ù£¬¼´ÊÇʹÓÃdbms_monitor°üÀ´¿ªÆô»ò¹Ø±ÕSQL¸ú×Ù¡£
֮ǰ¾É·½·¨ÊÇʹÓà alter session set events .. »òÕßʹÓÃdbms_system.set_ev·½Ê½
ʹÓÃdbms_monitor°ü¿ÉÒÔÔڻỰ£¬¿Í»§¶Ë£¬×é¼þÒÔ¼°Êý¾Ý¿âËĸö²ã¼¶¿ªÆôSQLµÄ¸ú×Ù¡ ......
×÷Óãºmerge into ½â¾öÓÃB±í¸úÐÂA±íÊý¾Ý£¬Èç¹ûA±íÖÐûÓУ¬Ôò°ÑB±íµÄÊý¾Ý²åÈëA±í£»
Óï·¨£º
MERGE INTO [your table-name] [rename your table here]
USING ( [write your query here] )[rename your query-sql and using just like a table]
ON ([conditional expression here] AND [...]...)
WHEN MATHED THEN [here ......