Friday, 30 October 2015

ORACLE-PL-SQL COMPLETE GUIDANCE WITH EXAMPLE

INTRODUCTION TO PL/SQL :

       Procedural Language/Structured Query Language
       PL/SQL is Very Usefully Language and Tools of Oracle to Manipulate, Control, Validate, and Restricted the Unauthorized Access of Data from the Database.
       PL/SQL can improve the Performance of an Application and it is dealing with Error and return User Friendly Error Message.
Advantages PL/SQL   :
       Procedural Language Supported.
       Reduces Network Traffic .
       Error Handling .
       Declare Variable. 
       Intermediate Calculation.
       Portable Application. 

PL/SQL Block   :

PL/SQL Block consists of three sections:
       The Declaration section (optional).
       The Execution section (mandatory).
       The Exception (or Error) Handling section (optional).



 PL/SQL Block  :
DECLARE

     Variable declaration

BEGIN
     Program Execution

EXCEPTION

     Exception handling

END;


Basic  Example  :
DECLARE
message varchar2(20):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;



PL/SQL DATA TYPE:

       Number type
Example :
no    number:=10;
(The NUMBER datatype is used to store fixed-point or floating-point numbers)
       Character type
(CHAR data type is used to store fixed-length character data)
Example:
grade  CHAR(1);
.VARCHAR2
(The VARCHAR2 data type is used to store variable-length character data)
.Datetime  type
(The Datetime data types lets us store and manipulate dates, times, and intervals (periods of time). )
 .Boolean type:
(BOOLEAN data type is used to store the logical values TRUE, FALSE and NULL (which stand for a missing, unknown, or inapplicable value).)



IF-THEN :

Syntax:
IF condition THEN
{
...statements to execute when condition is TRUE...
}
END IF;
If-then example:
declare
no number:=&n;
begin
if no>0 then
dbms_output.put_line('is positive');
end if;
end;



IF-THEN-ELSE :

Syntax:
IF condition THEN
{
...statements to execute when condition is TRUE...
}
ELSE
 {
...statements to execute when condition is FALSE...
}
END IF;


Example:

declare
no number:=&n;
begin
if no>0 then
dbms_output.put_line('is positive');
else
dbms_output.put_line('is negative');
end if;
end


IF-THEN-ELSIF-ELSE :

Syntax:
IF   condition1    THEN
{
...statements to execute when condition1 is TRUE...
}
ELSIF   condition2   THEN
{
...statements to execute when condition2 is TRUE...
}
ELSE
 {
...statements to execute when both condition1 and condition2 are FALSE...
}
 END IF;


Example :

DECLARE
  grade CHAR(1);
BEGIN
  grade := 'B';
 
  IF grade = 'A' THEN
    DBMS_OUTPUT.PUT_LINE('Excellent');
  ELSIF grade = 'B' THEN
    DBMS_OUTPUT.PUT_LINE('Very Good');
  ELSIF grade = 'C' THEN
    DBMS_OUTPUT.PUT_LINE('Good');
  ELSIF grade = 'D' THEN
    DBMS_OUTPUT. PUT_LINE('Fair');
  ELSIF grade = 'F' THEN
    DBMS_OUTPUT.PUT_LINE('Poor');
  ELSE
    DBMS_OUTPUT.PUT_LINE('No such grade');
  END IF;
END








 CASE  in PL_SQL example  :

DECLARE
  grade CHAR(1);
BEGIN
  grade := 'B';
 
  CASE

    WHEN grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent');
    WHEN grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good');
    WHEN grade = 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');
    WHEN grade = 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair');
    WHEN grade = 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor');

  END CASE;

EXCEPTION
  WHEN      CASE_NOT_FOUND      THEN
     DBMS_OUTPUT.PUT_LINE('No such grade');
END;




WHILE   Loop  :

Syntax:
WHILE  condition 
LOOP
{
...statements...
}
END LOOP;

Example:
declare
n number:=1;
begin
while n<10
loop
dbms_output.put_line(n);
n:=n+1;
end loop;
end;


For  loop  :

Syntax:
FOR  loop_counter IN [REVERSE] lowest_number..highest_number
LOOP
{
...statements
...}

END LOOP;

Example:

declare
i number;
begin
for i in 1..10
Loop
dbms_output.put_line(i);
end loop;
end;



Cursor    in   PL-SQL  :

(1)Simple   way   select     statement   in   pl-sql :

declare
eno       int;
ename   varchar(200);
begin
select  id,name into eno,ename  from mytest where id='1';
dbms_output.put_line(eno||ename);
end;

(2) SELECT   USING     %TYPE:
declare
eno       mytest.id%type;
ename   mytest.name%type;
begin
select  id,name  into  eno  ,  ename  from   mytest   where id='1';
dbms_output.put_line(eno||ename);
end;


 (3)cursor example  with %rowtype :
declare
en  mytest%rowtype;
cursor c1   is  select   *   from  mytest;
begin
open c1;
loop
fetch c1 into en;

dbms_output.put_line(en.id||en.name);

exit when c1%notfound;

end  loop;
close c1;

end;



 (4)cursor  with %type example:
declare
en        mytest.id%type;
ename    mytest.name%type;

cursor c1   is  select   id,name   from  mytest  where id=1;
begin
open c1;
loop
fetch c1 into en,ename;

dbms_output.put_line(en||ename);

exit when c1%notfound;

end  loop;
close  c1;

end;


 (5) parameterized      Cursor :
declare
myno number;
cursor c1(en number)  is  select   *   from mytest where id=myno;
res  c1%rowtype;
begin
myno:=&en;
open c1(myno);

loop
fetch c1  into res;

dbms_output.put_line(res.id||res.name);

exit  when    c1%notfound;

end  loop;
close  c1;

end;








No comments:

Post a Comment