==================== Example 1==================== sql> create table emp_tmp as select * f
==================== Example 1====================
sql> create table emp_tmp as select * from employees;
Table created.
SQL> select last_name from emp_tmp wherefirst_name='John';
LAST_NAME
-------------------------
Chen
Seo
Russell
SQL> edit
DECLARE
v_lnameVARCHAR2(15);
BEGIN
SELECT last_nameINTO v_lname
FROM emp_tmp
WHERE first_name ='John';
DBMS_OUTPUT.PUT_LINE('John''s last name is: ' || v_lname);
END;
/
SQL> @notes/s62.sql
DECLARE
*
ERROR at line 1:
ORA-01422: exact fetch returns more than requested number ofrows
ORA-06512: at line 4
SQL> edit
DECLARE
v_lnameVARCHAR2(15);
BEGIN
SELECT last_nameINTO v_lname
FROM emp_tmp
WHERE first_name ='John';
DBMS_OUTPUT.PUT_LINE('John''s last name is: ' || v_lname);
EXCEPTioN
WHEN TOO_MANY_ROWSTHEN
DBMS_OUTPUT.PUT_LINE('Your select statement retrieved multiple rows.Condider using a cursor.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('You meet an error!');
END;
/
SQL> @notes/s62.sql
Your select statement retrieved multiple rows. Condiderusing a cursor.
PL/SQL procedure successfully completed.
SQL> truncate table emp_tmp;
Table truncated.
SQL> @notes/s62.sql
You meet an error!
PL/SQL proceduresuccessfully completed
==================== Example 2====================
SQL> edit
DECLARE
v_lnameVARCHAR2(15);
BEGIN
SELECT last_nameINTO v_lname
FROM emp_tmp
WHERE first_name ='John';
DBMS_OUTPUT.PUT_LINE('John''s last name is: ' || v_lname);
<<welcomeback>>
DBMS_OUTPUT.PUT_LINE('Welcome back!');
EXCEPTION
WHEN TOO_MANY_ROWSTHEN
DBMS_OUTPUT.PUT_LINE('Your select statement retrieved multiple rows.Condider using a cursor.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('1: You meet an error!');
GoTOwelcomeback;
DBMS_OUTPUT.PUT_LINE('2: Game Over!');
<<gohere>>
DBMS_OUTPUT.PUT_LINE('3: You will be ended!');
END;
/
SQL> @notes/s63.sql
GOTO welcomeback;
*
ERROR at line 18:
ORA-06550: line 18, column 3:
PLS-00375: illegal GOTO statement; this GOTO cannot branchto label
'WELCOMEBACK'
ORA-06550: line 18, column 3:
PL/SQL: Statement ignored
SQL> edit
DECLARE
v_lname VARCHAR2(15);
BEGIN
SELECT last_nameINTO v_lname
FROM emp_tmp
WHERE first_name ='John';
DBMS_OUTPUT.PUT_LINE('John''s last name is: ' || v_lname);
<<welcomeback>>
DBMS_OUTPUT.PUT_LINE('Welcome back!');
EXCEPTION
WHEN TOO_MANY_ROWSTHEN
DBMS_OUTPUT.PUT_LINE('Your select statement retrieved multiple rows.Condider using a cursor.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('1: You meet an error!');
--GOTOwelcomeback;
GOTO gohere;
DBMS_OUTPUT.PUT_LINE('2: Game Over!');
<<gohere>>
DBMS_OUTPUT.PUT_LINE('3: You will be ended!');
END;
SQL> @notes/s63.sql
1: You meet an error!
3: You will be ended!
PL/SQL proceduresuccessfully completed
==================== Example 3====================
SQL> edit
DECLARE
e_insert_excepEXCEPTION;
PRAGMAEXCEPTION_INIT(e_insert_excep, -01400);
BEGIN
INSERT INTOdepartments(department_id, department_name) VALUES (280, NULL);
EXCEPTION
WHENe_insert_excep THEN
DBMS_OUTPUT.PUT_LINE('InsertOperation Failed!');
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
SQL> @notes/s64.sql
Insert Operation Failed!
ORA-01400: cannot insert NULL into("HR"."DEPARTMENTS"."DEPARTMENT_NAME")
PL/SQL proceduresuccessfully completed
--结束END--
本文标题: 13.PL_SQL——异常处理
本文链接: https://lsjlt.com/news/35443.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0