ORACLE PL/SQLÒì³£´¦Àí(Exception)ѧϰ±Ê¼Ç
1¡¢PL/SQL´íÎóÀàÐÍ
´íÎóÀàÐÍ
±¨¸æÕß
´¦Àí·½·¨
±àÒëʱ´íÎó
PL/SQL±àÒëÆ÷
½»»¥Ê½µØ´¦Àí£º±àÒëÆ÷±¨¸æ´íÎó£¬Äã±ØÐë¸üÕýÕâЩ´íÎó
ÔËÐÐʱ´íÎó
PL/SQLÔËÐÐʱÒýÇæ
³ÌÐò»¯µØ´¦Àí£ºÒì³£ÓÉÒì³£´¦Àí×Ó³ÌÐòÒý·¢²¢½øÐв¶»ñ
2¡¢Òì³£µÄÉùÃ÷
ÓÐÁ½ÖÖÒì³££ºÓû§×Ô¶¨ÒåÒì³£ºÍÔ¤¶¨ÒåÒì³£
Óû§×Ô¶¨ÒåÒì³£¾ÍÊÇÓɳÌÐòÔ±×Ô¼º¶¨ÒåµÄÒ»¸ö´íÎ󡣸ôíÎó»¹²»ÊǷdz£ÖØÒª£¬ËùÒÔ²¢Ã»Óн«Õû¸ö´íÎó°üº¬ÔÚOracleµÄ´íÎóÖС£ÀýÈ磬Ëü¿ÉÄÜÊÇÒ»¸öÓëÊý¾ÝÓйصĴíÎó¡£¶øÔ¤¶¨ÒåÒì³£Ôò¶ÔÓ¦ÓÚÒ»°ãµÄSQLºÍPL/SQL´íÎó¡£
Óû§×Ô¶¨ÒåÒì³£ÊÇÔÚPL/SQL¿éµÄÉùÃ÷²¿·ÖÉùÃ÷µÄ¡£Ïñ±äÁ¿Ò»Ñù£¬Òì³£Ò²ÓÐÒ»¸öÀàÐÍ£¨EXCEPTION£©ºÍÓÐЧ·¶Î§¡£ÀýÈ磺
DECLARE
Exception_name EXCEPTION;
…
3¡¢Òì³£µÄÒý·¢
ÓëÒì³£Ïà¹ØÁªµÄ´íÎó·¢ÉúµÄʱºò£¬¾Í»áÒý·¢ÏàÓ¦µÄÒì³£¡£Óû§×Ô¶¨ÒåÒì³£ÊÇͨ¹ýRAISEÓï¾äÏÔʽÒý·¢µÄ£¬¶øÔ¤¶¨ÒåÒì³£ÔòÊÇÔÚËüÃǹØÁªµÄORACLE´íÎó·¢ÉúµÄʱºòÒþʽÒý·¢µÄ¡£Èç¹û·¢ÉúÁËÒ»¸ö»¹Ã»ÓкÍÒì³£½øÐйØÁªµÄORACLE´íÎóµÄʱºò£¬Ò²»áÒý·¢Ò»¸öÒì³£¡£¸ÃÒì³£¿ÉÒÔʹÓÃOTHERS×Ó³ÌÐò½øÐв¶»ñ¡£Ô¤¶¨ÒåµÄÒì³£Ò²¿ÉÒÔʹÓÃRAISE½øÐÐÏÔʽµØÒý·¢£¬Èç¹ûÐèÒªÕâÑù×öµÄ»°¡£
…
RAISE exception_name;
…
4¡¢Òì³£µÄ´¦Àí
·¢ÉúÒì³£µÄʱºò£¬³ÌÐòµÄ¿ØÖƾͻá×ªÒÆµ½´úÂë¿éµÄÒì³£´¦Àí²¿·Ö¡£Òì³£´¦Àí²¿·ÖÊÇÓÉÒì³£´¦Àí×Ó³ÌÐò×é³ÉµÄ£¬ÕâЩÒì³£´¦Àí×Ó³ÌÐò¿ÉÒÔÊÇÕë¶ÔijЩÒì³£µÄ£¬Ò²¿ÉÒÔÊÇÕë¶ÔËùÓÐÒì³£µÄ¡£Óë¸ÃÒì³£Ïà¹ØÁªµÄ´íÎó·¢Éú£¬²¢Òý·¢Á˸ÃÒì³£µÄʱºò£¬¾Í»áÖ´ÐÐÒì³£´¦Àí²¿·ÖµÄ´úÂë¡£
Òì³£´¦Àí²¿·ÖµÄÓï·¨ÈçÏ£º
EXCEPTION
WHEN exception_name THEN
Sequence_of_statements1;
WHEN exception_name THEN
Sequence_of_statements2;
[WHEN OTHERS THEN
Sequence_of_statements3;]
END;
ÿһ¸öÒì³£´¦Àí²¿·Ö¶¼ÊÇÓÉWHEN×Ó¾äºÍÒý·¢Òì³£ÒÔºóÒªÖ´ÐеÄÓï¾ä×é³ÉµÄ¡£WHEN±êʶÕâ¸ö´¦Àí×Ó³ÌÐòÊÇÕë¶ÔÄĸöÒì³£µÄ¡£
OTHERSÒì³£´¦Àí×Ó³ÌÐò
PL/SQL¶¨ÒåÁËÒ»¸öÒì³£´¦Àí×Ó³ÌÐò£¬¼´OTHERS¡£µ±Ç°Òì³£´¦Àí²¿·Ö¶¨ÒåµÄËùÓÐWHENÓï¾ä¶¼Ã»Óд¦ÀíµÄÈÎÒâÒ»¸öÒÑÒý·¢µÄÒì³££¬¶¼»áµ¼ÖÂÖ´ÐÐÕâ¸öOTHERSÒì³£´¦Àí×Ó³ÌÐò¡£¸ÃÒì³£´¦Àí×Ó³ÌÐòÓ¦¸Ã×ÜÊÇ×÷Ϊ´úÂë¿éµÄ×îºóÒ»¸öÒì³£´¦Àí×Ó³ÌÐò£¬ÕâÑù¾Í»áÊ×ÏÈɨÃèÇ°ÃæµÄÒì³£´¦Àí×Ó³ÌÐò¡£WHEN OTHERS»á²¶»ñËùÓÐÒì³££¬²»¹ÜÕâЩÒì³£ÊÇÔ¤¶¨ÒåµÄ£¬»¹
Ïà¹ØÎĵµ£º
oracle and sqlsever ³£ÓÃÊýѧº¯Êý¶Ô±È
Êýѧº¯Êý
¡¡¡¡1.¾ø¶ÔÖµ
¡¡¡¡S:select abs(-1) value
¡¡¡¡O:select abs(-1) value from dual
¡¡¡¡2.È¡Õû(´ó)
¡¡¡¡S:select ceiling(-1.001) value
¡¡¡¡O:select ceil(-1.001) value from dual
¡¡¡¡3.È¡Õû£¨Ð¡£©
¡¡¡¡S:select floor(-1.001) value ......
´æ´¢¹ý³ÌÔÚ·þÎñÆ÷¶ËÔçÒѱà¼Ö´ÐйýµÄ´úÂë¡£Óû§Òª×öµÄÖ»Êǵ÷ÓúͽÓÊÕ´æ´¢¹ý·µ»ØµÄ½á¹û¡£ËùÒÔµ÷Óô洢¹ý³Ì±ÈÆÕͨµÄÓòéѯÓï¾ä·µ»ØÖµÒª¿ìµÃ¶à,´æ´¢¹ý³ÌµÄÖ´ÐÐËٶȸü¿ì,´æ ´¢¹ý³ÌÊDZ£´æÆðÀ´µÄ¿ÉÒÔ½ÓÊܺͷµ»ØÓû§ÌṩµÄ²ÎÊýµÄ Transact-SQL Óï¾äµÄ¼¯ºÏ¡£¿ÉÒÔ´´½¨Ò»¸ö¹ý³Ì¹©ÓÀ¾ÃʹÓ㬻òÔÚÒ»¸ö»á»°ÖÐÁÙʱʹÓ㨾ֲ¿ÁÙʱ¹ý ......
ÔÚ°²×°oracleµÄDBCA¹ý³ÌÖУ¬ÔÚ´´½¨²¢Æô¶¯oracleʵÀý£¨´´½¨¿Ë¡Êý¾Ý¿â£¬½ø¶ÈÌõÔÚ45%£©¾Í½øÐв»ÏÂÈ¥ÁË£¬ÖØ×°Á˼¸´ÎÖÕÓÚÕÒµ½ÎÊÌâµÄÖ¢½áÁË£¬½â¾ö¹ý³ÌÈçÏ£º
1¡¢×°Á˼¸±é¾ÍÊÇÄǸöÎÊÌ⣬ÎÒͻȻÏëµ½Òª¿´¿´°²×°ÈÕÖ¾¡£
2¡¢ÊÇÔÚ´´½ ......
oracle11g¾ßÓÐ×Ô¶¯µÄ±íѹËõ¹¦ÄÜ£¬ µ«µ±insertÓï¾äδָ¶¨¾ßÌåµÄÁÐÃûʱ£¬ »áʹÓÃ×Ô¶¯±íѹËõ¹¦ÄÜʧЧ¡£(Èç¸ÃÓï¾ä»áʹµÃ±ít_test²»ÄÜ×Ô¶¯Ñ¹Ëõ: insert into t_test select * from t_test2)
ÁíÍâʹÓÃһЩÍⲿ¹¤¾ß½øÐÐÊý¾Ý×°ÔØ(sqlload)£¬Ò²ÓпÉÄÜʹµÃ±í²»ÄÜ×Ô¶¯Ñ¹Ëõ£¬´ËʱÐèÒªÓÃÒÔÏÂÓï¾ä£¬ÒÔÖØÐ·ÖÎö±í£¬·ÖÎöÍê³ÉÖ®ºó£¬¸Ã±í¼´»á ......