ORACLE ´¿¶È¼¶±ð£¨PURITY£©
PRAGMA RESTRICT_REFERENCES()£¬Õâ¸öPRAGMA±È½Ï¸´ÔÓ£¬ ×ܵÄÀ´Ëµ£¬ËüÊÇÒ»¸ö³ÌÐò¸¨Öú¼ìÑéÂ룬¼ì²é×Ó³ÌÐòµÄ´¿¶È£¨PURITY£©£¬°ïÖú¼ìÑé×Ó³ÌÐòÊÇ·ñÓÐÎ¥·´¹æÔòµÄµØ·½¡£Ò»°ãÓÃÔÚº¯ÊýÉÏ£¬µ«µ±º¯Êýµ÷Óùý³Ìʱ£¬Ò²Òª×÷ÏàÓ¦µÄÉèÖüì²é¡£ÕâÊÇΪÁ˱ÜÃâµ±ÔÚDMLÓï¾äÉϵ÷Óú¯ÊýʱÕý³£Ö´Ðв»ÖÁÓÚ²úÉú´íÎó¡£
Óï·¨£¬PRAGMA RESTRICT_REFERENCES(function_name | default , )RNDS, WNDS, RNPS, WNPS) | , TRUST);
RNDS£¬WNDS£¬RNPS£¬WNPS¿ÉÒÔͬʱָ¶¨¡£µ«µ±TRUSTÖ¸¶¨ÊÇ£¬ÆäËüµÄ±»ºöÂÔ¡£
DEFAUTÊÇÖ¸×÷ÓÃÔڸóÌÐò°üÉϵÄËùÓÐ×Ó³ÌÐò£¬º¯Êý¡£
RNDS£¨Read No Database State£©£¬¹æ¶¨×Ó³ÌÐò²»ÄܶÁÈ¡ÈκεÄÊý¾Ý¿â״̬ÐÅÏ¢¡£(¼´²»»á²éѯÊý¾Ý¿âµÄÈÎºÎ±í£¬°üÀ¨DUALÐé±í£©
RNPS£¨Read No Package State£©£¬¹æ¶¨×Ó³ÌÐò²»ÄܶÁÈ¡ÈκγÌÐò°üµÄ״̬ÐÅÏ¢£¬Èç±äÁ¿µÈ¡£
WNDS£¨Write No Database State£©£¬¹æ¶¨×Ó³ÌÐò²»ÄÜÏòÊý¾Ý¿âдÈëÈκÎÐÅÏ¢¡££¨¼´²»ÄÜÐÞ¸ÄÊý¾Ý¿â±í£©
WNPS£¨Write No Package State£©£¬¹æ¶¨×Ó³ÌÐò²»ÄÜÏò³ÌÐò°üдÈëÈκÎÐÅÏ¢¡££¨¼´²»ÄÜÐ޸ijÌÐò°ü±äÁ¿µÄÖµ£©
TRUST£¬Ö¸³ö×Ó³ÌÐòÊÇ¿ÉÒÔÏàÐŵIJ»»áÎ¥·´Ò»¸ö»ò¶à¸ö¹æÔò¡£Õâ¸öÑ¡ÏîÊÇÐèÒªµÄµ±ÓÃC»òJAVAдµÄº¯Êýͨ¹ýPL/SQLµ÷ÓÃʱ£¬ÒòΪPL/SQLÔÚÔËÐÐÊǶÔËüÃDz»Äܼì²é¡£
ʾÀý:
create or replace package purity is
minsal number(6,2);
maxsal number(6,2);
function max_sal return number;
function min_sal return number;
--ÏÞÖÆº¯Êý²»Äܸıä°ü±äÁ¿:WNPS,ÆäËüµÄ»¹ÓÐ
pragma restrict_references(max_sal,wnps);
pragma restrict_references(min_sal,wnps);
end;
create or replace package body purity is
function max_sal return number
as
begin
--select max(sal) into maxsal from emp;
--¼ÓÉÏÃæÕâÐж԰ü±äÁ¿½øÐиıä,ÔòÌáʾ"Î¥·´Ïà¹Ø±àÒëָʾ"
return maxsal;
end;
function min_sal return number
as
begin
--select min(sal) into minsal from emp;
--¼ÓÉÏÃæÕâÐж԰ü±äÁ¿½øÐиıä,ÔòÌáʾ"Î¥·´Ïà¹Ø±àÒëָʾ"
return minsal;
end;
--¹¹Ô캯Êý
--д¹¹Ô캯Êý¹¹Ôì±äÁ¿Ê±,BEGIN¿ªÊ¼,¹²ÓðüÌå½áÊøµÄEND;±êÖ¾
begin
select min(sal),max(sal) into minsal,maxsal from em
Ïà¹ØÎĵµ£º
1¡¢OracleÀïÃæÓû§µÄÃÜÂëÊǽøÐмÓÃܱ£´æµÄ,ËùÒÔÖ»ÄÜÖØÐÂÐÞ¸ÄÉú³ÉеÄÃÜÂë.
ÀûÓÃϵͳ¹ÜÀíÔ±(sys)µÇ¼,½«scottÓû§µÄÃÜÂëÐ޸ļ´¿É
SQL>conn / as sysdba ;
ÒÑÁ¬½Ó¡£
SQL>alter user scott identified by tiger
;
Óû§ÒѸü¸Ä¡£
µ±È»Ò²¿ÉÒÔµ½WEB¶Ë½øÐÐÐ޸ĵØÖ·È ......
»ù±¾´ÓÀ´²»ÓÃleft/right join
Ò»¸öÏîÄ¿±»ÆÈÒªÓñðÈËдµÄ sql
±¾´òËã¸ÄдһÏ£¬Ìá¸ßЧÂÊ
·¢ÏÖ£º
¡¾1¡¿
select * from a
left outer join b on a.id= b.id AND ...1...
where ...2...
Óë
¡¾2¡¿
select * from a , b
where a.id= b.id(+)
A ......
1¡¢OracleÀïÃæÓû§µÄÃÜÂëÊǽøÐмÓÃܱ£´æµÄ,ËùÒÔÖ»ÄÜÖØÐÂÐÞ¸ÄÉú³ÉеÄÃÜÂë.
ÀûÓÃϵͳ¹ÜÀíÔ±(sys)µÇ¼,½«scottÓû§µÄÃÜÂëÐ޸ļ´¿É
SQL>conn / as sysdba ;
ÒÑÁ¬½Ó¡£
SQL>alter user scott identified by tiger ;
Óû§ÒѸü¸Ä¡£
µ±È»Ò²¿ÉÒÔµ½WEB¶Ë½øÐÐÐ޸ĵØÖ·ÈçÏÂ:
http://localhsot:1158/em(ÏàÓ¦µÄ·þÎñ±Ø ......
OracleÈÕÆÚº¯Êýѧϰʱ£¬Ôڽ̳ÌÓм¸¸öʵÀýÈçÏ£º
Months_between(’01-sep-95’, ’11-jan-94’)
½á¹ûÊÇ£º19.6774194
Add_months ÔÚÖ¸¶¨µÄÔ·ÝÉÏÃæÔö¼ÓÏàÓ¦µÃÔ·Ý
ÀýÈ磺
Add_months(’11-jan-94’, 6)
½á¹ûÊÇ£º11-jul-94
Next_day ¼ÆËã¹æ¶¨Èͮ򵀼óÒ»¸öÌØ¶¨ÈÕÆÚ
ÀýÈ磺
Next_ ......
SQL> select to_char(sysdate,'yyyy')||'Äê'||to_char(sysdate,'mm')||'ÔÂ'||to_char(sysdate,'dd')||'ÈÕ' from dual;
TO_CHAR(SYSDATE,'YYYY')||'Äê'|
»òÕßʹÓÃË«ÒýºÅ
select to_char(add_months(trunc(sysdate),-1),'yyyy"Äê"mm"ÔÂ"') from dual È¡ÉϸöÔ·Ý
......