Ô¤¶¨ÒåÀýÍâ too_many_rows
µ±Ö´ÐÐselect intoÓï¾äʱ£¬Èç¹û·µ»Ø³¬¹ýÁËÒ»ÐУ¬Ôò»á´¥·¢¸ÃÀýÍâ¡£ Sql´úÂë
1. declare
2. v_ename emp.ename%type; 3. begin
4. select ename into v_ename from emp; 5. exception
6. when too_many_rows then
7. dbms_output.put_line('·µ»ØÁ˶àÐÐ'); 8. end;
Ô¤¶¨ÒåÀýÍâ zero_divide
µ±Ö´ÐÐ2/0Óï¾äʱ£¬Ôò»á´¥·¢¸ÃÀýÍâ¡£
Ô¤¶¨ÒåÀýÍâ value_error
µ±ÔÚÖ´Ðи³Öµ²Ù×÷ʱ£¬Èç¹û±äÁ¿µÄ³¤¶È²»×ãÒÔÈÝÄÉʵ¼ÊÊý¾Ý£¬Ôò»á´¥·¢¸ÃÀýÍâvalue_error£¬±ÈÈ磺 Sql´úÂë
1. declare
2. v_ename varchar2(5); 3. begin
4. select ename into v_ename from emp where empno = &no1;
5. dbms_output.put_line(v_ename); 6. exception
7. when value_error then
8. dbms_output.put_line('±äÁ¿³ß´ç²»×ã'); 9. end;
ÆäËüÔ¤¶¨ÒåÀýÍâ(ÕâЩÀýÍâ²»ÊÇÔÚpl/sqlÀï´¥·¢µÄ£¬¶øÊÇÔÚÓÃoracleʱ´¥·¢µÄ£¬ËùÒÔÈ¡Ãû½ÐÆäËüÔ¤¶¨ÒåÀýÍâ) 1.login_denied
µ±Óû§·Ç·¨µÇ¼ʱ£¬»á´¥·¢¸ÃÀýÍâ 2.not_logged_on
Èç¹ûÓû§Ã»ÓеǼ¾ÍÖ´ÐÐdml²Ù×÷£¬¾Í»á´¥·¢¸ÃÀýÍâ 3.storage_error
Èç¹û³¬¹ýÁËÄÚ´æ¿Õ¼ä»òÊÇÄÚ´æ±»Ë𻵣¬¾Í´¥·¢¸ÃÀýÍâ 4.timeout_on_resource
Èç¹ûoracleÔڵȴý×ÊԴʱ£¬³öÏÖÁ˳¬Ê±¾Í´¥·¢¸ÃÀýÍâ
·ÇÔ¤¶¨ÒåÀýÍâ
·ÇÔ¤¶¨ÒåÀýÍâÓÃÓÚ´¦ÀíÓëÔ¤¶¨ÒåÀýÍâÎ޹صÄoracle´íÎó¡£Ê¹ÓÃÔ¤¶¨ÒåÀýÍâÖ»ÄÜ´¦Àí21¸öoracle´íÎ󣬶øµ±Ê¹ÓÃpl/sql¿ª·¢Ó¦ÓóÌÐòʱ£¬¿ÉÄÜ»áÓöµ½ÆäËüµÄһЩoracle´íÎó¡£±ÈÈçÔÚpl/sql¿éÖÐÖ´ÐÐdmlÓï¾äʱ£¬Î¥·´ÁËÔ¼Êø¹æ¶¨µÈµÈ¡£ÔÚÕâÑùµÄÇé¿öÏ£¬Ò²¿ÉÒÔ´¦ÀíoracleµÄ¸÷ÖÖÀýÍ⣬ÒòΪ·ÇÔ¤¶¨ÒåÀýÍâÓõIJ»¶à£¬ÕâÀïÎҾͲ»¾ÙÀýÁË¡£ ´¦Àí×Ô¶¨ÒåÀýÍâ
Ô¤¶¨ÒåÀýÍâºÍ×Ô¶¨ÒåÀýÍâ¶¼ÊÇÓëoracle´íÎóÏà¹ØµÄ£¬²¢ÇÒ³öÏÖµÄoracle´íÎó»áÒþº¬µÄ´¥·¢ÏàÓ¦µÄÀýÍ⣻¶ø×Ô¶¨ÒåÀýÍâÓëoracle´íÎóûÓÐÈκιØÁª£¬ËüÊÇÓÉ¿ª·¢ÈËÔ±ÎªÌØ¶¨Çé¿öËù¶¨ÒåµÄÀýÍâ.
ÎÊÌ⣺Çë±àдһ¸öpl/sql¿é£¬½ÓÊÕÒ»¸ö¹ÍÔ±µÄ±àºÅ£¬²¢¸ø¸Ã¹ÍÔ±¹¤×ÊÔö¼Ó1000Ôª£¬Èç¹û¸Ã¹ÍÔ±²»´æÔÚ£¬ÇëÌáʾ¡£ Sql´úÂë
1. --×Ô¶¨ÒåÀýÍâ
2. create or replace procedure ex_test(spNo number) 3. is 4. begin
5. --¸üÐÂÓû§sal
6. update emp set sal=sal+1000 where empno=spNo; 7. end; 8. /
ÔËÐУ¬¸Ã¹ý³Ì±»³É¹¦´´½¨¡£ SQL> exec ex_test(56); PL/SQL¹ý³Ì±»³É¹¦Íê³É
ÕâÀ±àºÅΪ56ÊDz»´æÔڵ쬏ղŵı¨Òì³£ÁË£¬ÎªÊ²Ã´ÏÖÔÚ²»±¨Òì³£ÄØ£¿ ÒòΪ¸Õ²ÅµÄÊÇselectÓï¾ä
Ôõô½â¾öÕâ¸öÎÊÌâÄØ£¿ Ð޸ĴúÂ룬ÈçÏ£º Sql´úÂë
1. --×Ô¶¨ÒåÀýÍâ
2. create or replace procedure ex_test(spNo number) 3. is
4. --¶¨ÒåÒ»¸öÀýÍâ 5. myex exception; 6. begin
7. --¸üÐÂÓû§sal
8. update emp set sal=sal+1000 where empno=spNo; 9. --sql%notfoundÕâÊDZíʾûÓÐupdate 10.--raise myex;´¥·¢myex 11.if sql%notfound then 12.raise myex; 13.end if; 14.exception
15.when myex then
16.dbms_output.put_line('ûÓиüÐÂÈκÎÓû§')£» 17.end; 18./
ÏÖÔÚÔÙ²âÊÔÒ»´Î£º
SQL> exec ex_test(56); ûÓиüÐÂÈκÎÓû§
¶þÊ®¶þ£ºoracleµÄÊÓͼ
oracleµÄÊÓͼ
½éÉÜ
ÊÓͼÊÇÒ»¸öÐéÄâ±í£¬ÆäÄÚÈÝÓɲéѯ¶¨Òå£¬Í¬ÕæÊµµÄ±íÒ»Ñù£¬ÊÓͼ°üº¬Ò»ÏµÁдøÓÐÃû³ÆµÄÁкÍÐÐÊý¾Ý¡£µ«ÊÇ£¬ÊÓͼ²¢²»ÔÚÊý¾Ý¿âÖÐÒÔ´æ´¢µÄÊý¾ÝÖµ¼¯ÐÎʽ´æÔÚ¡£ÐкÍÁÐÊý¾ÝÀ´×ÔÓɶ¨ÒåÊÓͼµÄ²éѯËùÒýÓÃµÄ±í£¬²¢ÇÒÔÚÒýÓÃÊÓͼʱ¶¯Ì¬Éú³É¡££¨ÊÓͼ²»ÊÇÕæÊµ´æÔÚ´ÅÅÌÉϵģ©
¿´Í¼£º
ÊÓͼÓë±íµÄÇø±ð ÊÓͼÓë±íµÄÇø±ð
1.±íÐèÒªÕ¼ÓôÅÅ̿ռ䣬ÊÓͼ²»ÐèÒª
2.ÊÓͼ²»ÄÜÌí¼ÓË÷Òý£¨ËùÒÔ²éѯËÙ¶ÈÂÔ΢Âýµã£© 3.ʹÓÃÊÓͼ¿ÉÒÔ¼ò»¯£¬¸´ÔÓ²éѯ ±ÈÈ磺ѧÉúÑ¡¿Îϵͳ
4.ÊÓͼµÄʹÓÃÀûÓÚÌá¸ß°²È«ÐÔ ±ÈÈ磺²»Í¬Óû§²é¿´²»Í¬ÊÓͼ
´´½¨/ÐÞ¸ÄÊÓͼ ´´½¨ÊÓͼ
create view ÊÓͼÃû as select Óï¾ä [with read only] ´´½¨»òÐÞ¸ÄÊÓͼ
create or replace view ÊÓͼÃû as select Óï¾ä [with read only] ɾ³ýÊÓͼ
drop view ÊÓͼÃû
µ±±í½á¹¹¹úÓ︴ÔÓ£¬ÇëʹÓÃÊÓͼ°É£¡
--´´½¨ÊÓͼ£¬°Ñemp±íµÄsal<1000µÄ¹ÍÔ±Ó³Éäµ½¸ÃÊÓͼ£¨view£© Sql´úÂë
1. create view myview as select * from emp where sal<1000;
--Ϊ¼ò»¯²Ù×÷£¬ÓÃÒ»¸öÊÓͼ½â¾ö ÏÔʾ¹ÍÔ±±àºÅ£¬ÐÕÃûºÍ²¿ÃÅÃû³Æ Sql´úÂë
1. create view myview2 as select emp.empno,emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno; ÊÓͼ֮¼äÒ²¿ÉÒÔ×öÁªºÏ²éѯ