ORACLE PL/SQL
Ò»¡¢Ê²Ã´ÊÇPL/SQL?
PL/SQL(Procedural Language/SQL)ÊǶÔSQLµÄÀ©³ä,ËüÎüÊÕÁ˽üÄêÀ´±à³ÌÓïÑÔµÄÐí¶à×î¸ßÉè¼ÆÌØµã:ÈçÊý¾Ý·â×°ÐÔ¡¢ÐÅÏ¢Òþ±ÎÐÔ¡¢ÖØÔغÍÀýÍâ´¦ÀíµÈ¡£ËüÔÊÐíSQLµÄÊý¾Ý²Ù×ÝÓïÑԺͲéѯÓï¾ä°üº¬ÔÚ¿é½á¹¹(block_structured)ºÍ´úÂë¹ý³ÌÓïÑÔÖÐ,ʹPL/SQL³ÉΪһ¸ö¹¦ÄÜÇ¿´óµÄÊÂÎñ´¦ÀíÓïÑÔ¡£
PL/SQLµÄÓŵãÈçÏÂ:
1.¿é½á¹¹(Block Structure)
PL/SQLÊÇ¿é½á¹¹ÓïÑÔ,Òâζ×ųÌÐò¿ÉÒÔ·Ö³ÉÈô¸ÉÂß¼¿é,¸÷×Ô°üº¬ÄǸöµ¥ÔªÀïÒªÇóµÄÂß¼ÓïÑÔ×ÊÔ´¡£¿ÉÒÔ¶Ô¿éÐû²¼±¾µØ±äÁ¿£¬ÔÚ¿éÖÐʹÓÃÕâЩ±äÁ¿,¿ÉÔÚËüÃÇÓ¦ÓõĿéÖÐÌØ±ðµØ´¦Àí´íÎóÌõ¼þ(½Ð×öExceptions)
2. Á÷³Ì¿ØÖÆ
Ìõ¼þÓï¾ä¡¢Ñ»·ºÍ·ÖÖ§¿ÉÓÃÀ´¿ØÖƳÌÐòµÄ¹ý³ÌÁ÷£¬ÒÔ¾ö¶¨ÊÇ·ñ»òºÎʱִÐÐSQL»òÆäËüÐж¯¡£ÕâÐ©ÌØµãÔÊÐíORACLE¹¤¾ß(ÖîÈçSQL*Forms)È¥·Ö×éÁªÏµÔÚÒ»ÆðµÄÃüÁî×éºÍͨ¹ýPL/SQL¿ØÖÆËüÃǵÄÖ´ÐС£ÕâÑù¿ÉÒÔ±ÜÃâÖÃÐí¶àÃüÁîΪµ¥¶ÀµÄ´¥·¢Æ÷²½Öè»òÕßǶÌ×Íⲿ±à³ÌÓïÑÔÖеÄSQLÓï¾äµÄÒªÇó¡£
3. ¿ÉÒÆÖ²ÐÔ
ÒòΪPL/SQLÊÇORACLEµÄÖ÷ÓïÑÔ,¹Ê³ÌÐò¿ÉÒÆÖ²ÖÁÖ§³ÖORACLEºÍPL/SQLµÄÈκβÙ×÷ϵͳƽ̨ÉÏ¡£
4.¼¯³ÉÐÔ
PL/SQLÔÚRDBMS(´æÖü¹ý³Ì¡¢´¥·¢Æ÷¡¢°ü)ºÍORACLE¹¤¾ßÖаçÑÝÁËÈÕÒæÔö³¤µÄÖÐÐĽÇÉ«¡£PL/SQLµÄ±äÁ¿ºÍÐÍÓëSQLµÄ±äÁ¿ºÍÐͼæÈÝ(Óë×Ô¼ºÓÃÔÚÊý¾Ý¿âÁÐÖеÄÐÍÒ²¼æÈÝ)¡£Òò´Ë£¬PL/SQLÊÇÁ¬½ÓÊý¾Ý¿â¼¼ÊõºÍ¹ý³Ì±à³ÌÄÜÁ¦Ö®¼ä¼ä϶µÄ·½±ãµÄÇÅÁº¡£
5. ¸Ä½øÁËÐÔÄÜ
PL/SQLµÄʹÓÿÉÒÔ°ïÖú¸Ä½øÓ¦ÓóÌÐòµÄÐÔÄÜ¡£ÔÚûÓÐPL/SQLʱ,ORACLEÿ´ÎÖ»´¦ÀíÒ»¸öSQLÓï¾ä,¶øÔÚ¾ßÓÐPL/SQLʱ,Ò»¸öÍêÕûµÄÓï¾ä¿éÒ»´Î·¢Ë͵½ORACLE,¿ÉÃ÷ÏԵؼõÉÙÓëORACLEÖ®¼äµÄͨÐź͵÷Óá£Ìá¸ßÁËÐ§Òæ¡£Ð§ÒæµÄ²îÒìÈ¡¾öÓÚPL/SQLʹÓõÄʲô»·¾³¡£ÕâÐ©Ð§ÒæÉÔºóÌÖÂÛ¡¡
¶þ¡¢PL/SQLµÄ½á¹¹
PL/SQLµÄÿ¸öµ¥ÔªÓÉÒ»¸ö»ò¶à¸ö¿é(blocks)×é³É¡£ÕâЩ¿é¿ÉÒÔÊÇÍêÈ«¶ÀÁ¢µÄ,»òÕßÒ»¸ö¿éǶÌ×ÔÚÁíÒ»¸ö¿éÖ®ÖС£ÕâÑù,Ò»¸ö¿é¿É±íʾÆäËü¿éµÄһС²¿·Ö,·´¹ýÀ´,ËüÇ¡ºÃÒ²ÊÇÕû¸ö³ÌÐòÂëµ¥ÔªµÄÒ»²¿·Ö¡£
ͨ³£,Ò»¸ö¿é¿ÉÒÔÊÇÎÞÃû¿é»òÕßÒ»¸ö×Ó³ÌÐò¡£
1. ÎÞÃû¿é(anonymous)
ÎÞÃû¿éÊÇÒ»ÖÖûÓÐÃû×ֵĿ顣ÕâЩ¿éÔÚÔËÐÐËüÃǵÄÓ¦ÓóÌÐòÖÐ˵Ã÷£¬²¢ÇÒΪÁËÖ´ÐÐÔÚÔËÐÐʱÓÉPL/SQLÒýÇæÍ¨¹ý¡£ÎÞÃû¿é¿ÉÒÔǶÈëÔ¤±àÒë³ÌÐò(»òOCI³ÌÐò)¡¢ÒÔ¼°SQL*PLUS»òSQL*DBAÖС£SQL*FormsÖеĴ¥·¢Æ÷Ò²ÓÉÕâЩ¿é×é³É,ÎÞÃû¿éÓõý϶ࡣ
ÎÞÃû¿éµÄ¶¨ÒåÐÎʽΪ:
DECLARE
--˵Ã÷
BEGIN
--Óï¾äÐòÁÐ
[EXCEPT
Ïà¹ØÎĵµ£º
ËäȻѧϰJavaºÜ¾ÃÁË£¬×Ô¼ºÒ²Á¬½Ó¹ýһЩÊý¾Ý¿â£¬±ÈÈçmysqlÖ®ÀàµÄ£¬Èç½ñÄØ£¬Ò²Ñ§Ï°ÁËÒ»¶Îʱ¼äµÄOracle£¬È»¶øÄØ£¬½ñÌìÊÇÎÒµÚÒ»´ÎÁ¬½ÓOracle£¬ºÙºÙ£¬Ó¦¸Ã»¹²»ËãÌ«³Ù°É¡£
½ñÌìÄØ£¬Óе㱿׾£¬´ó¼ÒĪЦ£¡
ÎÒÕâÊÇÒ»¸ö²éѯÀý×Ó
Ê×ÏÈ£¬Ô ......
Õâ´ÎÈ¥ÉÇÍ·ÊǸøÉÇÍ·µçÐŽ²¿Î,Ö÷½²ORACLEÊý¾Ý¿âÐÔÄÜÓÅ»¯,ΪÆÚ4Ìì.´ÓÂÞºþÆû³µÕ¾³ö·¢,×ßÉîÉǸßËÙ,´óÔ¼4,5¸öÖӾ͵½ÉÇÍ·ÁË.
³ö·¢Ê±ÊǰøÍí,³µ×ÓÔÚÉîÉǸßËÙÐнø,ϦÑôÎ÷Ï£¬ÂäÈÕµÄÓà»ÔÕÕÓ³ÔÚ¹«Â·Á½±ßµÄÇðÁê,ɽÌÁÉÏ£¬¿´ÉÏÈ¥ºÜÃÀ¡£ÉîÉǸßËٴ󲿷ÖÊÇÑØ×ź£°¶ÏßòêÑÑ£¬ËùÒÔ£¬ÓÐʱÔÚ³µÉϾÍÄܹ»¿´µ½º££¬ÂäÈÕµÄÓà»ÔÕÕÔÚ´óº£ÉÏ£¬²¨¹âÁÛÁÛ£¬¼ ......
ORACLEÖÐLikeÓëInstrÐÔÄÜ´ó±ÈÆ´
×÷Õߣºµ¤³¼ | ¡¾×ªÔØÊ±ÇëÎñ±ØÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕÂÔʼ³ö´¦ºÍ×÷ÕßÐÅÏ¢¼°±¾ÉùÃ÷¡¿
µØÖ·£ºhttp://rdc.taobao.com/blog/dba/html/246_like_instr_performance.html
t±íÖн«½üÓÐ1100ÍòÊý¾Ý£¬ºÜ¶àʱºò£¬ÎÒÃÇÒª½øÐÐ×Ö·û´®Æ¥Å䣬ÔÚSQLÓï¾äÖУ¬ÎÒÃÇͨ³£Ê¹ÓÃlikeÀ´´ïµ½ÎÒÃÇËÑË÷µÄÄ¿±ê¡£µ«¾¹ýʵ¼Ê ......
£¨1£© Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯
Æ÷ÖÐÓÐЧ)£º
Oracle
µÄ
½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬from×Ó¾äÖÐдÔÚ×îºóµÄ±í(»ù´¡±í driving
table)½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏÂ,Äã±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í¡£¼ÙÈçÓÐ3¸öÒÔÉϵıíÁ¬½Ó²éѯ,
ÄÇ¾Í ......
-- create by zh
-- n ÊÇ×÷ÎïµÄʱ¼ä,x ÊÇÏ£ÍûÔÚ¼¸µã³ÉÊì,·µ»Ø²¥ÖÖµÄʱ¼ä
with t as
(
select 64 n,9 x from dual union all
select 64 n,13 x from dual union all
select 64 n,17 x from dual union all
select 64 n,20 x from dual
)
select '³ÉÊìʱ¼ä:' || lpad(to_char(n),4,' ' ......