Академический Документы
Профессиональный Документы
Культура Документы
( Declaration Section )
_________________ v2 ;
...
Begin
__________________ s1 ; ( Execution section )
__________________ s2 ;
__________________ s3 ;
....
[Exception]
Scalar : ____________
|
number(4)
varchar2(50)
;
:= 'SCOTT' ;
:= 3.14
begin
v_empno := 7788 ;
dbms_output.put_line(v_empno);
dbms_output.put_line(v_name);
dbms_output.put_line(v_sal);
dbms_output.put_line(v_pi);
end;
;
;
number
Example
variable g_empno number
____________________________________________
begin
:g_empno := 200 ;
end;
_____________________________________________
print :g_empno
_______________________________________________
select *
from emp
where deptno = &p ;
table_name.column_name%type ;
emp.empno%type ;
declare
v_empno
v_name
v_sal
emp.empno%type
emp.ename%type
;
:= 'SCOTT' ;
:= 3.14 ;
begin
v_empno := 7788 ;
dbms_output.put_line(v_empno);
dbms_output.put_line(v_name);
dbms_output.put_line(v_sal);
dbms_output.put_line(v_pi);
end;
///////////////////////////////////////////END////////////////////////////////////////////////////////////
///////////////////////////////////////////////////
Chapter 02
writting Executable statement
syntax
select select_list
into variable_list
from table_name
[where condition ]
Example:
declare
v_name emp.ename%type ;
v_sal
emp.sal%type;
begin
select ename , sal
into v_name , v_sal
from emp
where empno= 7788 ;
dbms_output.put_line( v_name );
dbms_output.put_line( v_sal);
end;
_________________________________________________________________________
_____________________________________________________________
char(5) ;
number(4,1);
v_date
date ;
begin
v_char
:= substr('Alexandria' ,1,3);
:= sysdate ;
dbms_output.put_line(v_char);
dbms_output.put_line(v_number);
dbms_output.put_line(v_date);
end;
_________________________________________________________________________
______________________________________________________
from emp;
dbms_output.put_line(v_sum);
dbms_output.put_line(v_max);
dbms_output.put_line(v_min);
end;
_________________________________________________________________________
______________________________________________________________
varchar2(10) :=&p_g ;
v_result varchar2(25) ;
begin
v_result := case
when v_grade <50
then 'FAIL'
then 'PASS'
then 'GOOD'
then 'V.GOOD'
/////////////////////////////////////////////END//////////////////////////////////////////////////////////
///////////////////////////////////////////////
Chapter 03
Control structures and loops
1) if statement :if condition then
_______________________
_______________________
_______________________
end if;
------------------------------------------------------------------------if condition then
__________________
__________________
__________________
else
__________________
__________________
__________________
end if;
--------------------------------------------------------------------------if Condition1 then
__________________
__________________
__________________
elsif condition2 then
__________________
__________________
__________________
else
__________________
__________________
__________________
end if;
---------------------------------------------------------------------------Example 1 :declare
v_sal number (9) ;
begin
select sal
into v_sal
from emp
where empno = 7788 ;
if v_sal between 3000 and 4000 then
dbms_output.put_line('salary is between 3000 and 4000') ;
update emp set sal = sal * 1.2
where empno =7788;
end if;
end;
________________________________________________________________
___________________________________________
Example 2 :declare
Example 3 :declare
v_sal number (9) ;
begin
select sal into v_sal from emp where empno = 7788 ;
if v_sal between 2000 and 3000 then
dbms_output.put_line('salary is between 2000 and 3000') ;
update emp set sal = sal * 1.2 where empno =7788;
elsif v_sal between 3001 and 4000 then
dbms_output.put_line('salary is between 3001 and 4000') ;
update emp set sal = sal * 1.3 where empno =7788;
else
dbms_output.put_line(' salary out of range 3001and 4000');
end if;
end;
________________________________________________________________
_______________________________________________
2) Loops :1) Basic Loop
2) While loop
3) For Loop
____________________________________________________________
2.1) Basic Loop :syntax
loop
____________
____________
____________
exit when condition ;
end loop;
Example :Declare
v_counter
begin
loop
number(3) := 0;
v_counter := v_counter +1 ;
dbms_output.put_line(v_counter);
exit when v_counter=10;
end loop;
end;
2.2) While loop :while ( condition ) loop
----------------------------------------------------------------------------end loop;
Example :Declare
v_counter
number(3) := 0;
begin
while ( v_counter < 10) loop
v_counter := v_counter + 1 ;
dbms_output.put_line(v_counter);
end loop;
end;
________________________________________________________________
______________________________________________
Example
begin
for v_counter in 1..10 loop
dbms_output.put_line( v_counter );
end loop;
end;
begin
for v_counter in reverse 1..10 loop
dbms_output.put_line( v_counter );
end loop;
end;
set serveroutput on
/////////////////////////////////END////////////////////////////////////////////////////////
/////////////////////////////////////////
chapter 04
Working with cursors
what is cursor ?
cursor steps
declare : cursor cursor_name is select statement .
open
: open cursor_name.
fetch
test
: cursor_namefound , cursor_name%notfound ,
cursor_name%rowcount
close
: close cursor_name;
____________
|empno | sal |
____________
|7788 | 200 |
Cursor_name%found
cursor_name%notfound
|7756 | 300 |
|7569 | 400 |
|7782 | 200 |
Cursor_name%Open
cursor_name%rowcount
|7756 | 300 |
|7920 | 300 |
|9876 | 600 |
emp_rec
-------empno
sal
____________
|7788 | 200 |
____________
Example
declare
cursor emp_cur is
select empno , sal
from emp ;
emp_rec emp_cur%rowtype;
begin
open emp_cur ;
loop
fetch emp_cur into emp_rec ;
if emp_rec.sal > 2000 then
update emp
set sal = sal * 1.1
where empno = emp_rec.empno ;
dbms_output.put_line ( emp_rec.empno);
end if;
exit when emp_cur%notfound ;
end loop;
close emp_cur ;
end;
Chapter 05
Working with composite data types
Chapter content
1) Record Variables
2) Table Variables
3) Table of records
Introduction
what is variable? ( memory location )
Variable types
1) Scalar : store only one value has( name , data type , width )
variable_name
;
v_empno
_______
|
|
_______
not null
:= 7788 ;
2) composite :
2.1 Record variable
consists of group of locations each location has name , data
type , width
acts like record in a table
1
name
job
begin
emp_rec.eno := 2 ;
emp_rec.name := 'A' ;
emp_rec.job := 'Analyst' ;
dbms_output.put_line(emp_rec.eno);
dbms_output.put_line(emp_rec.name);
dbms_output.put_line(emp_rec.job);
end;
..............................................................................
table_name%rowtype ;
Example
Declare
emp_rec
emp%rowtype ;
emp_rec :
________
empno ename job
mgr
hiredate
sal
comm deptno
begin
select *
into emp_rec
from emp
where empno = 7788 ;
if emp_rec.sal > 2000 then
update emp set sal= sal * 1.2 where empno= emp_rec.empno
;
dbms_output.put_line ( ' empno no : ' || emp_rec.empno || '
has been updated' ) ;
end if;
dbms_output.put_line ( emp_rec.job ) ;
end;
Declare
emp_rec
emp%rowtype ;
begin
select *
into emp_rec
from emp
where empno = &o ;
if emp_rec.sal > 2000 then
update emp set sal= sal * 1.2 where empno= emp_rec.empno
;
dbms_output.put_line ( ' empno no : ' || emp_rec.empno || '
has been updated' ) ;
end if;
dbms_output.put_line ( emp_rec.job ) ;
end;
____________________________________________
2) table variables :
syntax
;
variable_name
.............................
1
2
3
4
index
Example
Declare
type name_table_type is table of varchar2(50) index by
binary_integer ;
name_table
name_table
name_table_type ;
index
scot 1
t
Alen 2
war
d
200
....
begin
name_table (1) := 'Scott' ;
name_table (2) := 'Alen' ;
name_table (200) := 'ward' ;
dbms_output.put_line ( name_table (1) );
dbms_output.put_line ( name_table (2) );
dbms_output.put_line ( name_table (200) );
end;
________________________________________________________________
___________________________________________________
3) table of records
Declare
type emp_table_type is table of emp%rowtype index by
binary_integer ;
emp_table
emp_table_type ;
mgr
hiredate
sal
scot
t
Analy
st
.....
______
begin
emp_table(1).ename := 'Scott' ;
emp_table(2).job := 'Analyst' ;
dbms_output.put_line ( emp_table(1).ename);
dbms_output.put_line ( emp_table(2).job );
end;
/////////////////////////////////END////////////////////////////////////////////////////////
//////////////////////////////////////
Chapter 06
Handling Exceptions
what is exception ?
Exception types:
1) oracle predefined
( has code , name , text )
2) oracle non-predefined ( has code , text )
3) user defined ( no code , no name , no text )
handling exceptions
[Declare]
begin
---------------------s1
---------------------s2
---------------------s3
---------------------s4
[Exception]
when exception_name then
---------------------------s1
---------------------------s2
---------------------------s3
when exception_name then
---------------------------s1
---------------------------s2
---------------------------s3
when others then
---------------------------s1
---------------------------s2
---------------------------s3
end ;
4) Propagating Exceptions
Declare
v_sal
number(6) ;
begin
begin
select sal into v_sal from emp where empno = 7 ;
exception
when no_data_found then
dbms_output.put_line('invalid employee
number');
end;
select sal into v_sal from emp where deptno = 10 ;
insert into dept
values (50 ,'dept50' , 'Alex');
update emp set sal = sal * 1.2 where empno = 7788 ;
Exception
when too_many_rows then
dbms_output.put_line ( ' adjust your search condition ') ;
end;
________________________________________________________________
_______________________________________________________
/////////////////////////////////END////////////////////////////////////////////////////////
//////////////////////////////////////
Chapter 07
creating procedures and functions
Example
create or replace procedure update_sal
( p_empno number ,
p_value number )
is
begin
update emp
set sal = sal + p_value
where empno = p_empno ;
end ;
calling procedure
a) execute update_sal ( 7788 , 200) ;
....................................
b)from plsql block
-------------begin
delete from emp where empno = 7788 ;
update_sal (7566 , 500 );
insert into dept values ( 60 , 'ss' , 'cairo');
end;
**********************************************
creating functions :
syntax
create [or replace] function function_name
( parameter_1_name data type ,
parameter_2_name data type , ..... )
return return_data_type
is
begin
return value ;
[exception]
end;
***********************************************
Example
create or replace function calc_tax
( p_empno
number ,
p_tax
number)
return number
is
v_t number (6,2) ;
begin
Parameter Modes:
- in
- Out
- in out
b) out parameters
Example
in
number ,
out varchar2,
out varchar2 )
is
begin
select ename , job
into p_ename , p_job
from emp
where empno = p_empno ;
end;
-----------declare
v_n
v_j
varchar2(15) ;
varchar2(15) ;
begin
get_emp_data (7566 , v_n , v_j ) ;
dbms_output.put_line (v_n) ;
dbms_output.put_line (v_j) ;
end ;
*****************************************
c) in out parameter
create or replace procedure format_phone
(p_phone in out varchar2 )
is
begin
p_phone := '(' || substr ( p_phone , 1, 2 ) ||
')' || substr ( p_phone ,3,3)
'-' || substr ( p_phone ,6) ;
||
end ;
***************************************
declare
tt
varchar2(15) := '035570515' ;
begin
format_phone (tt) ;
dbms_output.put_line(tt);
end;
*****************************************
parameter calling methods ( Method of passing parameters )
Example
create or replace procedure add_dept
( p_deptno dept.deptno%type ,
p_dname
p_loc
dept.loc%type
default 'Unknown' )
is
begin
insert into dept (deptno , dname , loc )
values (p_deptno , p_dname , p_loc ) ;
end;
****************************************
Calling
begin
add_dept(70) ;
add_dept(80 , 'HR') ;
add_dept(90 , 'HR' , 'Alex' );
add_dept(95 ,p_loc =>'Alex' );
end;
*****************************************
desc procedure_name
desc update_sal
drop procedure procedure_name ;
drop procedure update_Emp ;
drop function calc_tax ;
*****************************************
to know what are the procedures and functions in your current
user
select object_name , object_type
from user_objects
where object_type in ( 'PROCEDURE' , 'FUNCTION');
/////////////////////////////////END////////////////////////////////////////////////////////
//////////////////////////////////////
Chapter 08
Creating and Managing Packages
PartI
what is package?
package components
package specification
package body
Example:
Create or replace package emp_pk
is
procedure update_comm (p_empno emp.empno%type ,
p_comm emp.comm%type ) ;
function calc_tax (p_empno emp.empno%type , p_tax
number ) return number ;
End ;
/
Create or replace package body emp_pk
is
-----------------------------------------------------------------------------
________________________________________________________________
______________________________________________________
2)Calling Package Constructs
2.1) using execute command
package_name.subprogram_name ;
set serveroutput on
execute emp_pk.update_comm ( 7900 , 6000 );
2.2) from PLSQL Block
begin
emp_pk.update_comm ( 7788 , 6000 );
end ;
2.3) calling package functions from select statement
select empno, ename, sal, emp_pk.calc_tax ( empno , 10 )
from emp ;
3)Bodiless Packages
Example
Create or replace package global_var
is
v_mty constant number(9,2) := 1.06 ;
v_pi constant number(4,2) := 3.14 ;
end;
calling bodiless packages
begin
dbms_output.put_line ( 2 * global_var.v_pi * 10 );
end;
///////////////////////////////PART II////////////////////////////////
Package overloading
create or replace package add_dept_pk
is
procedure add_dept (p_deptno number);
procedure add_dept (p_deptno number,p_dname varchar2 );