ƽʱÓõıȽ϶àµÄ£¬¾ÍÊÇNVL£¬Ã»ÔõôÔÚÒâÆäËû¼¸¸ö¡£
NVL ¾Í²»ÓÃ˵ÁË£¬¾ÍÊÇÅжϵÚÒ»¸öÊÇ·ñΪNULL£¬ÊǾÍÓõڶþ¸ö´úÌæ£¬²»ÊǾͷµ»ØµÚÒ»¸ö¡£
NVL2 Ò²ÊÇÅжϵÚÒ»¸öÊÇ·ñΪNULL£¬µ«ÊÇ·µ»ØÖµÈ´²»Í¬¡£µÚÒ»¸öΪNULL£¬¾Í·µ»ØµÚÈý¸ö£¬·ñÔò·µ»ØµÚ¶þ¸ö¡£
NULLIF ÅжÏÁ½¸ö²ÎÊýÊÇ·ñÏàµÈ£¬ÏàµÈ·µ»ØNULL£¬·ñÔò·µ»ØµÚÒ»¸ö²ÎÊý¡£
COALESCE Õâ¸ö²»ÏÞ²ÎÊýÊýÄ¿£¬ÕÒµ½µÚÒ»¸ö²»ÎªNULLµÄ¾Í·µ»Ø¡£ÊµÔÚûÓУ¬¾Í·µ»ØNULL¡£
¿´À´»¹ÊÇÓõIJ»¹»¶à°¡¡£ ......
1.oracleÉèÖò»Í¬È¨ÏÞµÄÓû§È¥·ÃÎÊͬһ±í¿Õ¼ä
1.create user testa identified by testa;
2.alter user testa default tablespace users temporary tablespace temp;
3.grant connect to testa;
4.grant select any table to testa;
2.ORACLEÖÐÉèÖÃͬһ¸öÓû§¶ÔÁ½¸ö±í¿Õ¼äµÄȨÏ޵ĴúÂë
alter user Óû§ quota unlimited on ±í¿Õ¼äA;
alter user Óû§ quota unlimited on ±í¿Õ¼äB;
»òÕß·Å¿ªËùÓбí¿Õ¼ä
grant unlimited tablespace to Óû§;
»òÕßË÷ÐÔ¸øËùÓÐȨÏÞ
grant resource,connect,dba to Óû§;
3.ORACLEÉèÖÃÖ»ÄÜ·ÃÎʱíȨÏÞµÄÓû§
grant select on table1 to user1;
grant select on table2 to user1; ......
´Óoracle 9i ¿ªÊ¼£¬ÌṩÁËÒ»¸ö½Ð×ö“¹ÜµÀ»¯±íº¯Êý”µÄ¸ÅÄ¿ÉÒÔÀûÓùܵÀ»¯À´·µ»Ø±íº¯Êý¡£
µ«ÕâÖÖÀàÐ͵ĺ¯Êý£¬±ØÐë·µ»ØÒ»¸ö¼¯ºÏÀàÐÍ£¬ÇÒ±êÃ÷ pipelinedÒÔ¼°²»ÄÜ·µ»Ø¾ßÌå±äÁ¿£¬¶øÊÇÒÔÒ»¸ö¿Õ return ·µ»Ø!
Õâ¸öº¯ÊýÖУ¬Í¨¹ý pipe row () Óï¾äÀ´ËͳöÒª·µ»ØµÄ±íÖеÄÿһÐÐ
ÔÚµ÷ÓÃÕâ¸öº¯ÊýµÄʱºò£¬Í¨¹ý table() ¹Ø¼ü×ְѹܵÀÁ÷·ÂÕæÎªÒ»¸öÊý¾Ý¼¯!
¼ûÏÂÃæÊ¾Àý:
1¡¢½¨Á¢Ò»¸öÈýÁеĶÔÏó£º
create or replace type rowType_CustOrd_Line is object(order_no varchar2(12),line_no varchar2(4),rel_no varchar2(4));
2¡¢½¨Á¢table¶ÔÏó
create or replace type tabType_CustOrd_Line is table of rowType_CustOrd_Line;
3¡¢½¨Á¢°üÍ·£º
CREATE OR REPLACE PACKAGE Dj_Test_API IS
module_ CONSTANT VARCHAR2(25) := 'FNDBAS';
lu_name_ CONSTANT VARCHAR2(25) := 'DjTest';
Function Get_Customer_Order_Line(
order_no_ IN VARCHAR2
)
return tabType_CustOrd_Line pipelined;
END Dj_Test_API;
/
4¡¢½¨Á¢°üÌ壺
CREATE OR REPLACE PACKAGE BODY ......
ÔÚÊý¾Ý¿âÖо³£ÒªºÏ²¢×Ö·û´®£¬¶øºÏ²¢×Ö·û´®µÄ·½·¨Óкܶ࣬ÏÖÔÚ×ܽáÈçÏ£º
--´´½¨»á»°¼¶ÁÙʱ±í
create global temporary table TMPA
(
ID INTEGER,
NAME VARCHAR2(10)
)
on commit preserve rows;
--²åÈë¼Ç¼
insert into tmpa select 1,'aa' from dual;
insert into tmpa select 1,'bb' from dual;
insert into tmpa select 1,'cc' from dual;
insert into tmpa select 2,'dd' from dual;
insert into tmpa select 2,'ee' from dual;
insert into tmpa select 3,'ff' from dual;
commit;
--1¡¢sys_conect_by_path·½·¨
select id,max(ltrim(sys_connect_by_path(name,','),',')) as group_name
from
(
select a.*,row_number()over(partition by id order by name) as row_num
from tmpa a
) a
group by id
start with row_num=1
connect by prior id=id and prior row_num= row_num-1
--2¡¢wm_concat·½·¨
select id,wm_concat(name) as group_name from tmpa
group by id;
--3¡¢×Ô¶¨Ò庯Êý·¨
--¶¨Ò庯Êý
create function group_concat(vid number)
return varchar2
as
vResult varchar2(100);
begin
for cur ......
ÔÎĵØÖ·£ºhttp://book.csdn.net/bookfiles/732/10073222578.shtml
¶ÔÓÚDMLÓï¾äÀ´Ëµ£¬Ö»ÒªÐÞ¸ÄÁËÊý¾Ý¿é£¬OracleÊý¾Ý¿â¾Í»á½«ÐÞ¸ÄǰµÄÊý¾Ý±£ÁôÏÂÀ´£¬±£´æÔÚundo segmentÀ¶øundo segmentÔò±£´æÔÚundo±í¿Õ¼äÀï¡£´ÓOracle 9iÆð£¬ÓÐÁ½ÖÖundoµÄ¹ÜÀí·½Ê½£º×Ô¶¯Undo¹ÜÀí£¨Automatic Undo Management£¬¼ò³ÆAUM£©ºÍÊÖ¹¤Undo¹ÜÀí£¨Manual Undo Management£¬¼ò³ÆMUM£©¡£Oracle 9i֮ǰֻÄÜʹÓÃMUM£¬¶øÇÒÔÚMUMÖУ¬undo segmentÓÖ½Ð×örollback segment¡£´ÓOracle 9iÆð£¬Oracle¾Í½¨ÒéʹÓÃAUM£¬¶ø²»Ó¦ÔÙʹÓÃMUMÁË¡£
7.1 DMLÓï¾äÓëundo
µ±ÎÒÃÇ·¢³öÒ»ÌõDML£¨±ÈÈçupdate t set col1='A' where col1='B'£©Óï¾äʱ£¬ÆäÖ´Ðйý³Ì¿É´óÖ¸ÅÀ¨ÎªÒÔϼ¸²½¡£
1. ÔÚshared poolÀï½øÐнâÎö£¬´Ó¶øÉú³ÉÖ´Ðмƻ®¡£¾ßÌå½âÎö¹ý³Ì¼ûµÚ5Õ¡£
2.¼ÙÉè¸ù¾ÝÖ´Ðмƻ®£¬µÃ³öcol1='B'µÄ¼Ç¼´æ·ÅÔÚ10ºÅÊý¾ÝÎļþµÄ54ºÅÊý¾Ý¿éÀï¡£
3. ·þÎñÆ÷½ø³ÌÔÚbuffer cacheÀïÕÒÒ»¸ö¿ÉÓõÄundoÊý¾Ý¿é£¬Èç¹ûûÓз¢ÏÖ£¬Ôòµ½undo±í¿Õ¼äÀïÕÒÒ»¸ö¿ÉÓõÄundo¿é£¬²¢µ÷Èëbuffer cache¡£¼ÙÉè»ñµÃµÄundoÊý¾Ý¿éºÅΪ24ºÅ£¬Î»ÓÚ11ºÅundoÊý¾ÝÎļþÀï¡£
4. ½«¸Ä±äǰµÄÖµ£¬Ò²¾ÍÊÇA·ÅÈë11ºÅundoÊý¾Ý¿é¡£
5. Ó ......
ÔÚpl/sqlʱ¾³£»áÅöµ½½«Ä³Ð©Ìض¨µÄ·ûºÅת»»³ÉÐÐ,Õ⹦ÄÜÏ൱ÓÚsplit.ÒÔǰÔÚÍøÉÏÊÕ¼¯µÄsplitº¯ÊýÈçÏÂ:
CREATE OR REPLACE TYPE DJ_STR_SPLIT IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE PACKAGE Dj_Function_API IS
module_ CONSTANT VARCHAR2(25) := 'FNDBAS';
lu_name_ CONSTANT VARCHAR2(25) := 'DjFunction';
Function Get_Split_Change(
str_ IN VARCHAR2,
delimiter_ IN VARCHAR2:=';')
Return Dj_Str_Split;
END DJ_FUNCTION_API;
/
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE BODY Dj_Function_API IS
---------------------------Get_Split_Change--------------------- ......