Sei sulla pagina 1di 11

----------sql-----------------1) create table customer664 ( customer_id number(5) primary key, customer_name varchar2(25) NOT NULL, customer_city varchar2(20), zip

varchar2(9) ); create table order664 ( order_id number(5) primary key, order_date date NOT NULL, customer_id number(5) references customer664(customer_id) ); create sequence sss srart with 1 increment by 1 ; insert into customer664 values(sss.nextval,'john doe','newyork',10059); insert into customer664 values(sss.nextval,'mary smith','san francisco',65777); insert into order664 values(103,'03-oct-09',2); insert into order664 values(104,'10-oct-09',1); insert into order664 values(105,'10-oct-09',4); a) select order_date,count(order_id) from order664 group by order_date; b) select order_id,order_date from order664 where customer_id = (select customer_id from customer664 where customer_name='john doe'); 3) update customer664 set zip=10090 where city='new york'; 4) alter order664 add Bill_Amount number(10,2); -------------------------------------------------------2) create table video ( videono varchar2(5) primary key, title varchar2(25) not null, category varchar2(15), runtime number(3), charge number(5,2) ); create table copy ( copyno number(5) primary key, purchasedate date default sysdate, videono varchar2(5) not null references video(videono) );

create sequence s1 srart with 1 increment by 1 ;

insert into video values ('ct1d','crimson tide','drama',113,45); insert into video values ('b1d','braveheart','drama',107,40);

insert into copy values (s1.nextval,'1-may-2011','b1d'); a) select videono,count(videono) from copy group by videono; b) select catrgory,max(charge),min(charge),sum(charge) from video group by category; c) select * from video where videono in (select videono from copy where purchasedate between 1-jan-2005 AND 3-jan-2014); ---------------------------------------------------3) create table designation ( designationid number(3) primary key, designationname varchar(20) ); create table associate ( associate-id number primary key, first-name varchar(10), last-name varchar(10), designation-id number(3) references designation(designation-id), email varchar(10), experience number(10) ); a) select a.designationid,a.first-name,a.last-name,a.Designation ID,a.email,a.exper ience,b.designationname from associate a join designation b on a.designation-id=b.designation-id; b) select first-name , last-name from associate where email like '%'||first-name||'%' ; ------------------------------------------------------------4) create table building ( building_id number primary key,

building-name varchar, location varchar, building-color varchar ); create table room ( room-no number primary key, floor_no number, no_of_bed numbar, room_rent number, building_id number references building(building_id) ); insert into building values(1,'lords','lane2','white'); insert into building values(2,'eden','lane3','blue'); insert into room values(101,1,2,500,1); insert into room values(201,2,1,1500,2); a) select building_id,count(room_no) from room group by building_id; b) select b.room_no,a.building_name,a.location from (select room_no,building_id from room where room_rent=max(room_rent)) b join building a on a.building_id=b.building_id; c) select count(room_no) from room where no_of_bed=2; -------------------------------------------------------------5) create table department ( dept_no number(3) primary key, dept_name varchar2(10), location varchar2(10) ); create table emp ( empno number(4) primary key, empname varchar2(30), manager number(4) references emp(empno), salary number(7,2), dept_no number(3) references department(dept_no) ); insert into emp values(1,'puja bhatt',6,30000,2); insert into emp values(2,'purabi',1,15000,3); insert into emp values(1,'production','lane AB'); insert into emp values(1,'marketing','lane 5'); a) select a.empname,a.salary,b.depart_name,b.location

from (select empname,dept_no,salary from emp where salary= (select min(salary) from emp)) a join department b on a.dept_no=b.dept_no b)select max(count(dept_no)) from emp group by dept_no; c) select a.empname,b.empname as managername from emp a join emp b on a.emp_no=b.manager; --------------------------------PL/SQL------------------------------------------------------------------------------------------------------------------------------1) CREATE OR REPLACE TRIGGER tgr BEFORE DELETE OR INSERT OR UPDATE ON emp FOR EACH ROW BEGIN if inserting then update dep set totalsalary=totalsalary + :new.sal where DepId=:new.DepId; elsif deleting then update dep set totalsalary=totalsalary- :old.sal where DepId=:old.DepId; else update dep set totalsalary=totalsalary- :old.sal where DepId=:old.DepId; update dep set totalsalary=totalsalary+ :new.sal where DepId=:new.DepId; end if; end; /; 2) create or replace procedure pp() As CURSOR cur IS select empname,salary from emp where (salary*10)/100 <=2000; cc cur%ROWTYPE; BEGIN open cur; LOOP FETCH cur into cc; EXIT when cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE(cc.empname||' '||cc.salary); END LOOP; CLOSE cur; END; / 3) create or replace procedure get_All_Emp(Did number)

As cursor cur1 Is select * from emp where deptno=Did; cc cur1%RowTYPE; MyOwnException Exception; begin open cur1 loop fetch cur1 into cc; WHEN cur1%NOTFOUND Raise MyOwnException; dbms_output.put_line('empId='cc.empno||'Emp Name='|| cc.empName||'manage='||cc.manager||'salary='||cc.salary||'deptNo='|| cc.deptNo); Exception WHEN MyOwnException THEN dbms_output.put_line('NO EMPLOYEES FOR THIS DEPARMENT'); end loop; close cur1; END;

4) b) CREATE OR REPLACE PROCEDURE delete(id number) IS BEGIN delete from emp where empno=id end; / c) CREATE OR REPLACE PROCEDURE incr(id number,raise number) IS BEGIN update emp set salary=salary+raise where empno=id; EXCEPTION when NO_DATA_FOUND then dbms_output.put_line('no employee found'); end; / ---pl sql block------declare begin incr(2,3000); delete(3); end; /

5) create or replace procedure pp() As CURSOR cur IS select a.empname,b.depname,b.empname as mgrname,a.salary from emp a join emp b on a.emp_no=b.manager; cc cur%ROWTYPE; BEGIN open cur; LOOP FETCH cur into cc; EXIT when cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE(cc.empname||'is WORKING IN DEPATMENT'||cc.depname||'under'| |cc.mgrname||'DRAWING A SALARY OF'||cc.salary); END LOOP; CLOSE cur; END; / 6) declare begin dbms_output.put_line('Hello iSelfSchooling'); end;/ 7) declare dept_name dep.deptname%type; begin end;/ 8) declare var a.name%type; begin select name into var from a where id=1; dbms_output.put_line('depname is::'|| var); EXCEPTION when NO_DATA_FOUND then dbms_output.put_line('Record was not found'); end; / 9) declare CURSOR cur IS select b.depname,a.no_of_emp,a.total,a.avgsal from (select dept_no,count(dept_no) as no_of_emp,sum(salary) as total,avg(salary) as avgsal from emp group by dept_no) a join department b on a.dep_no=b.dep_no order by b.depname;

cc cur%ROWTYPE; BEGIN open cur; LOOP FETCH cur into cc; EXIT when cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE(cc.depname||' '||cc.no_of_emp||' '||cc.total||' '|| cc.avgsal); END LOOP; CLOSE cur; end; 10) declare CURSOR cur IS select b.depname,a.no_of_emp from (select dept_no,count(dept_no) as no_of_emp from emp group by dept_no) a join de partment b on a.dep_no=b.dep_no order by b.depname; cc cur%ROWTYPE; BEGIN open cur; LOOP FETCH cur into cc; EXIT when cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE(cc.depname||' '||cc.no_of_emp); END LOOP; CLOSE cur; end; 11) declare CURSOR cur IS select b.depname,a.no_of_emp from (select dept_no,count(dept_no) as no_of_emp from emp group by dept_no where coun t(dept_no)>4) a join department b on a.dep_no=b.dep_no order by b.depname; BEGIN for item in cur LOOP DBMS_OUTPUT.PUT_LINE(item.depname||' '||item.no_of_emp); END LOOP; end; / 12)

create table trans ( account_no number(10), name varchar(10), trans_date date primary key, /*i just considered it as unique*/ deposit_amnt number(10) ); create table master ( account_no number(10), name varchar(10), trans_date date, balance number(10) ); CREATE OR REPLACE TRIGGER trig BEFORE DELETE OR INSERT OR UPDATE ON trans FOR EACH ROW declare amt number(10); BEGIN select balance into amt from master where account_no=:new.trans.account_no; if inserting then insert into master values(:new.trans.account_no,:new.trans.name,:new.trans.trans _date,amt+:new.trans.deposit_amt); elsif deleting then delete from master where trans_date=:old.trans.trans_date; else update master set balance=balance- :old.trans.deposit_amt where trans_date=:old. trans.trans_date; update master set balance=balance+:new.trans.deposit_amt where trans_date=:new.t rans.trans_date; end if; end; /; 13) create table emp ( empname varchar(10), depno number(5) ); declare CURSOR cur IS select * from emp where depno=20;

BEGIN for item in cur LOOP DBMS_OUTPUT.PUT_LINE(item.depname||' '||item.depno); END LOOP; end; 14) CREATE TABLE dept_stat ( dname VARCHAR2(10) primary key, total_empno NUMBER(3), total_sal NUMBER (8), avg_sal NUMBER (8,2) ); DECLARE cursor cur is SELECT dname, count (*) as ttemp, SUM(sal) as tsal, AVG(sal) as avsal FROM dept d, emp e WHERE d.deptno = e.deptno GROUP BY dname; BEGIN FOR item IN cur LOOP insert into dept_stat values (item.dname, item.ttemp,item.ttsal, item.avsal); END LOOP; END; / 15) DECLARE cursor csr (p_deptno dept.deptno%TYPE) is select dname, count (*) ttemp, sum(sal) ttsal, avg(sal) avsal from dept d, emp e where d.deptno = e.deptno and d.deptno = p_deptno group by dname; a_deptno NUMBER(2); BEGIN a_deptno := 10; for item in csr (a_deptno) loop insert into dept_stat values (item.dname, item.ttemp, item.ttsal, item.avsal); end loop; END; / 16)

DECLARE cursor csr (p_deptno dept.deptno%TYPE) is select dname, count (*) ttemp, sum(sal) ttsal, avg(sal) avsal from dept d, emp e where d.deptno = e.deptno and d.deptno = p_deptno group by dname; a_deptno NUMBER(2); not_enough_emp EXCEPTION; BEGIN a_deptno := 10; for item in csr (a_deptno) loop IF item.ttemp < 10 THEN raise not_enough_emp; insert into dept_stat values (item.dname, item.ttemp, item.ttsal, item.avsal); end loop; EXCEPTION WHEN not_enough_emp THEN dbms_output.put_line( We need more employees ); END; / 17) declare CURSOR cur IS select firstname,lastname from customer; BEGIN for item in cur LOOP DBMS_OUTPUT.PUT_LINE(item.firstname||','||item.lastname); END LOOP; end; 18) CREATE OR REPLACE PROCEDURE add_dept (p_deptno IN dept.deptno%TYPE, p_dname IN dept.dname%TYPE, p_loc IN dept.loc%TYPE, p_status OUT VARCHAR2) IS BEGIN INSERT INTO dept VALUES (p_deptno, p_dname, p_loc); p_status := OK ; EXCEPTION WHEN dup_val_on_index THEN

p_status := DUPLICATE RECORD ; WHEN invalid_number THEN p_status := INVALID INPUT DATA ; WHEN others THEN p_status := unknown PROBLEM. ; END; /

19) CREATE OR REPLACE PROCEDURE del(dno in dep.depno%type,stats out varchar2) IS BEGIN delete from department where dep_no=dno; stats := OK ; EXCEPTION WHEN no_data_found THEN stats := no data found ; WHEN others THEN stats := unknown PROBLEM. ; end; / 20) CREATE TABLE cust_stat ( customer_lname VARCHAR2(20), trade_date DATE, portfolio_value NUMBER(7,2) );

Potrebbero piacerti anche