Session 3 PDF
Session 3 PDF
Exceptions
:
NO_DATA_FOUND
TOO_MANY_ROWS
INVALID_CURSOR
ZERO_DIVIDE
exact fetch returns more than requested
number of rows
:
Declare
; number
Begin
; Select empno into x from emp
; End
Ahmed Alsaied
[email protected]
Session 3
Begin
; End
Declare
; number
Begin
Ahmed Alsaied
[email protected]
Session 3
no data found
when no data found
.
Declare
; number
Begin
Select empno into x from emp
; Where empno = 18
Exception when no_data_found then
;End
raise application error
-20101
20000 20999 .
Session 3
; exception
BEGIN
IF sysdate > '20-april-2009' then
; Raise x
; End if
Exception
When x then
; )'Dbms_output.put_line('user-defined exception
; End
procedures
. SQL
anonymous
declaration begin
& end . exception
Ahmed Alsaied
[email protected]
Session 3
: procedure
create
or replace
procedure
is begin
:
; emp.sal%type
Is
V_sal
Begin
procedure created
anonymous block
declare anonymous block
is procedure
anonymous block
Ahmed Alsaied
[email protected]
Session 3
.
:
sqlplus execute
. exec
:
-1
Create procedure P1
IS
Cursor xemp is
Select ename , sal from emp
V_sal emp.sal%type;
V_ename emp.ename%type ;
Begin
Open xemp
Ahmed Alsaied
[email protected]
Session 3
:
parameters
procedures
procedure
:
: In Parameters
default
:
Is
; V_sal emp.sal%type
Begin
From emp
Session 3
where
V_SAL V_SAL
:
)Exec test2(7788
7788 .
; )EXECUTE P5 (7788
: Out Parameters
, :
Create or replace procedure test3
(p_empno in emp.empno%type , p_ename out
)emp.ename%type
Is
Ahmed Alsaied
[email protected]
Session 3
; V_ename emp.ename%type
Begin
Select ename into v_ename
From emp
; Where empno = p_empno
; P_ename = :v_ename
; End
p_empno
v_ename v_ename
.. p_ename
p_ename
:
)Variable x varcahr2 (20
Print x
) ( :
)Exec test3 (7902 , :x
:
CREATE OR REPLACE PROCEDURE P6
(V_ID
IN EMP.EMPNO%TYPE ,
V_NAME OUT EMP.ENAME%TYPE ,
V_SAL
OUT EMP.SAL%TYPE
,
V_COMM OUT EMP.COMM%TYPE
)
IS
Ahmed Alsaied
[email protected]
Session 3
BEGIN
SELECT ENAME , SAL , COMM
INTO
V_NAME, V_SAL,V_COMM
FROM EMP
WHERE EMPNO = V_ID ;
END P6;
SQL> VARIABLE g_name VARCHAR2(15)
SQL> VARIABLE g_sal NUMBER
SQL> VARIABLE g_comm NUMBER
SQL> EXECUTE query_emp(7654,:g_name,
:g_sal, :g_comm)
SQL> PRINT g_name
. drop procedure
: show error
10
Ahmed Alsaied
[email protected]