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
Ïà¹ØÎĵµ£º
/*
º¯ÊýÃû³Æ:oracle ×Ö·û°´Î»»òº¯Êý
²ÎÊýÔ¼Êø:p1Óëp2µÄ³¤¶È±ØÐëÒ»ÖÂ
*/
create or replace function F_BITOR(p1 in string, p2 in string) return varchar2 is
Result varchar2(16);
t_p number(3);
r_p varchar2(16);
p_p number(3);
c_1 char(1);
c_2 char(1);
beg ......
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 ......
1.¼¤»îSQL¸ú×Ù
´Óoracle10gÒÔºóÌṩÁËÐµķ½·¨¼¤»îSQLµÄ¸ú×Ù£¬¼´ÊÇʹÓÃdbms_monitor°üÀ´¿ªÆô»ò¹Ø±ÕSQL¸ú×Ù¡£
֮ǰ¾É·½·¨ÊÇʹÓà alter session set events .. »òÕßʹÓÃdbms_system.set_ev·½Ê½
ʹÓÃdbms_monitor°ü¿ÉÒÔÔڻỰ£¬¿Í»§¶Ë£¬×é¼þÒÔ¼°Êý¾Ý¿âËĸö²ã¼¶¿ªÆôSQLµÄ¸ú×Ù¡ ......
1. ÿÌìµÄ8£º00µ½23£º00ÿ¸ô5·ÖÖÓÖ´ÐÐÒ»¸ösqlÓï¾äµÄJOB
--½¨Á¢Ò»¸ö´æ´¢¹ý³Ì
CREATE OR REPLACE PROCEDURE p_jobtest IS
v_hh VARCHAR2(2);
BEGIN
v_hh := to_char(SYSDATE, 'hh24');
IF v_hh >= '08' AND v_hh <= '22' THEN
--ÄãµÄsqlÓï¾ä ......
oracle ´æ´¢¹ý³ÌµÄ»ù±¾Óï·¨
1.»ù±¾½á¹¹
CREATE OR REPLACE PROCEDURE ´æ´¢¹ý³ÌÃû×Ö
(
²ÎÊý1 IN NUMBER,
²ÎÊý2 IN NUMBER
) IS
±äÁ¿1 INTEGER :=0;
±äÁ¿2 DATE;
BEGIN
END ´æ´¢¹ý³ÌÃû×Ö
2.SELECT INTO STATEMENT
½«select²éѯµÄ½á¹û´æÈëµ½±äÁ¿ÖУ¬¿ÉÒÔͬʱ½«¶à¸ö ......