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
Ïà¹ØÎĵµ£º
oracle±í¿Õ¼ä²Ù×÷Ïê½â
1
2
3×÷Õߣº À´Ô´£º ¸üÐÂÈÕÆÚ£º2006-01-04
5
6
7½¨Á¢±í¿Õ¼ä
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
·Ç³£ÉÙµÄÇé¿öÏ£¬ÎÒÃÇ»á¸Ð¾õÎÒÃǵĿ⡱Hang¡±ÁË£¬¼ÓÁËÒþºÅµÄÒâ˼ÊÇ˵ÓÐÊ±ÕæµÄÊÇHangÁË£¬ÓÐһЩÔò²»ÊÇ£¬ÊÇÓÉÓÚÐÔÄܵÄÎÊÌâÒýÆðµÄ¡£ÎÒÓöµ½¹ý¼¸´ÎHangµÄÇé¿ö£¬½áºÏ×ÅÍøÉÏһЩÎÄÕ£¬°Ñ¿ÉÄܵÄÔÒò¡¢µ±Ê±ÎÒÃÇÓ¦¸Ã×öµÄһЩ²Ù×÷½øÐÐÁËÈçϵÄ×ܽᣬ²»¶ÔµÄµØ·½´ó¼Ò¿ÉÒÔ·¢Mail¸øÎÒ:crane@storren.net ¡£
Ò»¡¢Êý¾Ý¿âHangʱ¿ÉÄܵÄÏÖÏó
......
1¡¢×ª»»·þÎñÆ÷¹éµµÄ£Ê½£¬Èç¹ûÒÑÊǹ鵵ģʽ¿ÉÌø¹ý´Ë²½£º
¡¡%sqlplus /nolog (Æô¶¯sqlplus)
¡¡¡¡SQL> conn / as sysdba (ÒÔDBAÉí·ÝÁ¬½ÓÊý¾Ý¿â)
¡¡¡¡SQL> shutdown immediate; (¼´Ê±¹Ø±ÕÊý¾Ý¿â)
¡¡¡¡SQL> startup mount (Æô¶¯ÊµÀý²¢¼ÓÔØÊý¾Ý¿â£¬µ«²»´ò¿ª)
¡¡¡¡SQL> alter database archivelog; (¸ü¸ÄÊ ......
ÔÚWhere×Ó¾äÖУ¬¿ÉÒÔ¶Ôdatetime¡¢char¡¢varchar×Ö¶ÎÀàÐ͵ÄÁÐÓÃLike×Ó¾äÅäºÏͨÅä·ûѡȡÄÇЩ“ºÜÏñ...”µÄÊý¾Ý¼Ç¼£¬ÒÔÏÂÊÇ¿ÉʹÓõÄͨÅä·û£º
% Áã»òÕß¶à¸ö×Ö·û
_ µ¥Ò»ÈκÎ×Ö·û£¨Ï»®Ïߣ©
\ ÌØÊâ×Ö·û
[] ÔÚijһ·¶Î§ÄÚµÄ×Ö·û£¬Èç ......
-- 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,' ' ......