0% found this document useful (0 votes)
7 views

Lab Program in Rdbms

added by tahi

Uploaded by

tahi66438
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Lab Program in Rdbms

added by tahi

Uploaded by

tahi66438
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

3.

Sequential control:

create database l;

use l;

delimiter **

create procedure prg()

begin

declare no int;

set no=0;

label:loop

set no=no+1;

select no;

if no=5 then leave label;

end if ;

end loop label;

select no;

end **

mysql> DELIMITER ;

mysql> CALL prg;

output:

+------+

| no |

+------+

| 1|

+------+

1 row in set (0.00 sec)

+------+
| no |

+------+

| 2|

+------+

1 row in set (0.00 sec)

+------+

| no |

+------+

| 3|

+------+

1 row in set (0.00 sec)

+------+

| no |

+------+

| 4|

+------+

1 row in set (0.01 sec)

+------+

| no |

+------+

| 5|

+------+

1 row in set (0.01 sec)


+------+

| no |

+------+

| 5|

+------+

1 row in set (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

4.exception handling

Create database he;

Use he;

Create table s(id int primary key,title varchar(40),author varchar(90));

Insert into s values(1,”java”,”james”),(2,”c”,”pavi”);

Create table h(id int primary key,title varchar(40),author varchar(90));

DELIMITER **

CREATE PROCEDURE ext()

begin

DECLARE done INT DEFAULT 0;

DECLARE sid integer;

DECLARE sbkname,sautname varchar(20);

DECLARE syop integer;

DECLARE cur CURSOR FOR SELECT * FROM s;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur;

label: LOOP

FETCH cur INTO sid,sbkname,sautname,syop;

INSERT INTO h values( sid,sbkname,sautname,syop);


IF done = 1 THEN LEAVE label;

END IF;

END LOOP;

CLOSE cur;

end **

Query OK, 0 rows affected (0.01 sec)

DELIMITER ;

CALL ext;

5.Implicit and explicit cursor

create database cur;

use cur;

create table p(id int,name varchar(90));

insert into p values(1,"pavi"),(2,"kavi");

select * from p;

delimiter **

create procedure li(INOUT namer varchar(4000))

begin

declare is_done integer default 0;

declare s_name char(80) default " ";

declare stud_cursor cursor for

select name from v;

declare continue handler for not found set is_done=1;

open stud_cursor;

g:loop

fetch stud_cursor into s_name;

if is_done =1 then leave g;


end if;

set namer=CONCAT(s_name,";",namer);

end loop g;

close stud_cursor;

end **

set @namer=" ";

call li(@namer);

select @namer;

end **

Query OK, 0 rows affected (0.00 sec)

Output:

mysql> select * from h;

+------+------+

| id | name |

+------+------+

| 1 | pavi |

| 2 | kavi |

+------+------+

2 rows in set (0.00 sec)

+-------------+

| @namer |

+-------------+

| kavi;pavi; |

+-------------+

6.trigger

Create database tr;


Use tr;

create table h(id int,name varchar(67),salary int);

insert into h values(1,"pavi",90200),(2,"savi",40000);

select * from h;

delimiter **

create trigger s

before insert on h for each row

begin

if new.salary<15000 then set new.salary=0;

end if;

end **

insert into h values(3,"pavi",90200),(4,"savi",4000);

select * from h;

end **

output:

+------+------+-------+

| id | name | salary |

+------+------+-------+

| 1 | pavi | 90200 |

| 2 | savi | 40000 |

+------+------+-------+

+------+------+-------+

| id | name | salary |

+------+------+-------+

| 1 | pavi | 90200 |

| 2 | savi | 40000 |
| 3 | pavi | 90200 |

| 4 | savi | 0|

+------+------+-------+

7.program for in out parameter

mysql> create database par;

mysql> use par;

mysql> create table aut(id int primary key,name char(90),gender char(90));

mysql> create table bk(id int unique,ISBN int ,name char(90),price int,pages int);

mysql> insert into aut values(1,"pavi","female"),(2,"ravi","male");

mysql> insert into bk values(1,001,"c",2000,289),(2,002,"java",4000,489),


(3,003,"rdbms",7000,1289);

mysql> delimiter **

mysql> create procedure up(in t_isbn char(10),in new_price integer)

-> begin

-> update bk set price =new_price where isbn=t_isbn;

-> end **

mysql> select * from bk;

-> end **

+------+------+-------+-------+-------+

| id | ISBN | name | price | pages |

+------+------+-------+-------+-------+
| 1| 1|c | 2000 | 289 |

| 2 | 2 | java | 4000 | 489 |

| 3 | 3 | rdbms | 7000 | 1289 |

+------+------+-------+-------+-------+

3 rows in set (0.00 sec)

mysql> delimiter ;

mysql> call up(001,1890);

Query OK, 1 row affected (0.01 sec)

mysql> select * from bk;

+------+------+-------+-------+-------+

| id | ISBN | name | price | pages |

+------+------+-------+-------+-------+

| 1| 1|c | 1890 | 289 |

| 2 | 2 | java | 4000 | 489 |

| 3 | 3 | rdbms | 7000 | 1289 |

+------+------+-------+-------+-------+

3 rows in set (0.00 sec)

mysql> delimiter **

mysql> create procedure maxi(out highprice int)

-> begin

-> select max(price) into highprice from bk;

-> end **

Query OK, 0 rows affected (0.01 sec)


mysql> delimiter ;

mysql> call maxi(@m);

Query OK, 1 row affected (0.00 sec)

mysql> select @m;

+------+

| @m |

+------+

| 7000 |

+------+

1 row in set (0.00 sec)

mysql> delimiter **

mysql> create procedure gen(inout gend int,in mtgender char(8))

-> begin

-> select count(*) from aut where gender=mtgender;

-> end **

Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;

mysql> call gen(@m,"male");

+----------+

| count(*) |

+----------+

| 1|

+----------+

1 row in set (0.00 sec)


Query OK, 0 rows affected (0.00 sec)

mysql> call gen(@f,"female");

+----------+

| count(*) |

+----------+

| 1|

+----------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

8.pl/sql records and tables

Set serveroutput on;

SQL>CREATE TABLE customers (

id INT NOT NULL,

name VARCHAR(90),

address VARCHAR(90),

salary BINARY_DOUBLE

);

SQL>set define off;

SQL> INSERT INTO customers VALUES(1, 'riya', 'delhi', 2000.0);

SQL> INSERT INTO customers VALUES(2, 'priya', 'delhi', 1500.0);

SQL>INSERT INTO customers VALUES(3, 'viya', 'delhi', 6500.0);

SQL> COMMIT;

SQL>SELECT * FROM customers;

SQL>DECLARE

c_idcustomers_id customers.id%TYPE := 8;
c_name customers.name%TYPE;

c_addr customers.address%TYPE;

BEGIN

SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_idcustomers_id;

DBMS_OUTPUT.PUT_LINE('Address:' || c_addr);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('No such customer!');

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error!');

END;

Output:

ID
----------
NAME
---------------------------------------------------------------------------
-----
ADDRESS
---------------------------------------------------------------------------
-----
SALARY
----------
1
riya
delhi
2.0E+003

ID
----------
NAME
---------------------------------------------------------------------------
-----
ADDRESS
---------------------------------------------------------------------------
-----
SALARY
----------
2
priya
delhi
1.5E+003
ID
----------
NAME
---------------------------------------------------------------------------
-----
ADDRESS
---------------------------------------------------------------------------
-----
SALARY
----------
3
viya
delhi
6.5E+003

No such customer!

PL/SQL procedure successfully completed.

9. package:

CREATE OR REPLACE PACKAGE simple_pkg AS

FUNCTION get_square(num IN NUMBER) RETURN NUMBER;

END simple_pkg;

CREATE OR REPLACE PACKAGE BODY simple_pkg AS

FUNCTION get_square(num IN NUMBER) RETURN NUMBER IS

BEGIN

RETURN num * num;

END get_square;

END simple_pkg;

BEGIN

DBMS_OUTPUT.PUT_LINE('Square of 4:'|| simple_pkg.get_square(4));

END;

output;

Square of 4:16
PL/SQL procedure successfully completed.

10.function:

Create database fn;

Use fn;

create table student (Name varchar(100),maths int,english int,science int,history int);

insert into student values("rihana",95,89,85,81),("rifana",90,87,86,81),("rizwana",90,85,86,81),


("riyana",null,null,null,null);

select * from student;

delimiter **

create function tbl_update(s_name varchar(50),m1 int,m2 int,m3 int,m4 int)

returns int

deterministic

begin

update student set maths=m1,english=m2,science=m3,history=m4 where name = s_name;

return 1;

end **

delimiter ;

select tbl_update("riyana",85,69,75,82);

select * from student;

You might also like