1) / Displaying The Employee Details by Using Procedure
1) / Displaying The Employee Details by Using Procedure
e from emp_dup where empno=eno; dbms_output.put_line('THE EMPLOYEE DETAILS WAS'||' '||e.empno||' '|| e.ename||' '||e.sal||' '||e.job||' '||e.deptno); exception when no_data_found then dbms_output.put_line('NO SUCH EMPLOYEE EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS'); end proc_emp_details; SQL> execute proc_emp_details(7900); 2)/*DISPLAYING THE NAME AND UPDATED SALARY WHEN THE EMPLOYEE NUMBER HAS BEEN ENTERED AND IT HAS BEEN DONE BY MEANS OF A PROCEDURE*/ create or replace procedure proc_in_out(eno in number,name out varchar2,salary out number) as e emp%rowtype; begin select * into e from emp_dup where empno=eno; if e.job='MANAGER' then e.sal:=e.sal+1000; update emp_dup set sal=e.sal where empno=eno; elsif e.job='CLERK' then e.sal:=e.sal+500; update emp_dup set sal=e.sal where empno=eno; else e.sal:=e.sal+800; update emp_dup set sal=e.sal where empno=eno; end if; name:=e.ename; salary:=e.sal; end proc_in_out; SQL> variable enam varchar2(30)
SQL> variable esal number SQL> execute proc_in_out(7900,:enam,:esal); SQL> print enam; SQL> print esal;
3)/*BY USING PROCEDURE INVOKING THE UPDATED SALARY AND EMPLOYEE NAME BY GIVING THE UPDATED SALARY AS OUT PARAMETER IN WHICH BY SIMPLY GIVING THE EMPLOYEE NUMBER*/ create or replace procedure proc_in_out1(eno in number,name out varchar2,salary in number,saly out number) as e emp%rowtype; begin select * into e from emp where empno=eno; if e.job ='MANAGER' then e.sal:=e.sal+salary; update emp set sal=e.sal where empno=eno; elsif e.job ='CLERK' then e.sal:=e.sal+salary; update emp set sal=e.sal where empno=eno; else e.sal:=e.sal+salary; update emp set sal=e.sal where empno=eno; end if; name:=e.ename; saly:=e.sal; exception when no_data_found then dbms_output.put_line('NO SUCH EMPLOYEE EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS'); end proc_in_out1; SQL> variable enam varchar2(30) SQL> variable esal number SQL> execute proc_in_out1(7900,:enam,2000,:esal); SQL> print enam;
4)/*INCREASING THE SALARY BY 10% ACCORDING TO THE EMPLOYEE ID HAS BEEN PASSED*/ create or replace procedure raise_sal(empid number) as r emp_dup%rowtype; salary number; begin select * into r from emp_dup where empno=empid; salary:=r.sal*1.10; update emp_dup set sal=salary where empno=empid; dbms_output.put_line('THE UPDATED SALARY WAS'||salary); exception when no_data_found then dbms_output.put_line('THERE WAS NO SUCH EMPLOYEE_ID EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS FOR THE SAME EMPLOYEE_ID'); end; SQL> execute raise_sal(7369);
5)/*THE PROCEDURE HAS FOUR FORMAL PARAMETERS,ONE OF WHICH WAS IN PARAMETER AND THE OTHER THREE ARE OUT PARAMETERS*/ create or replace procedure proc_in_out(empid in number,name out varchar2,esal out number,ecomm out number) as begin select ename,sal,comm into name,esal,ecomm from emp_dup where empno=empid; dbms_output.put_line('THE EMPLOYEE DETAILS WAS'||' '|| name||' '||esal||' '||ecomm); exception when no_data_found then
dbms_output.put_line('THERE WAS NO SUCH EMPLOYEE EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS FOR THE SAME EMPLOYEEID'); end proc_in_out; SQL> variable salary number SQL> variable namely varchar2(30) SQL> variable commission number SQL> execute proc_in_out(7369,:namely,:salary,:commission); SQL> print namely SQL> print salary SQL> print commission
6)/*CREATING THE PROCEDURES WITH DEFAULT VALUES*/ create or replace procedure proc_dept(v_deptno in number default 60,v_dname in varchar2 default 'unknown',v_loc in varchar2 default 'HYD') as begin insert into dept values(v_deptno,v_dname,v_loc); end proc_dept; SQL> execute proc_dept; SQL> select * from dept; SQL> execute proc_dept(50,'credit'); SQL> select * from dept; SQL> execute proc_dept(70,'debit','delhi'); SQL> select * from dept;
7)/*DECLARING THE SUBPROGRAMM AND GET EXECUTED IN THE PROCEDURE a) THE SUBPROGRAMM INSERT THE VALUES INTO THE LOG_TABLES b) THE PROCEDURE DELETES THE EMPLOYEE TABLE BY PASSING THE EMPLOYEE NUMBER c) BOTH ACTIONS WILL BE DONE AT THE SAME TIME WHEN THE PROCEDURE GETS EXECUTED*/ create or replace procedure insert_del(empid in number) as procedure proc_insert as begin insert into log_tables values(user,sysdate); end proc_insert; begin delete from emp_dup where empno=empid; proc_insert; end insert_del; SQL> execute insert_del(7369); SQL> select * from log_tables; 8)/*DECLARING THE PROEDURES IN AN ANONYMOUS BLOCK a)THE PROCEDURES UPDATES THE SALARY BY 10% BY PASSING THE EMPLOYEE NUMBER b)THAT PROCEDURES GETS INVOKED IN THE ANONYMOUS BLOCK*/ a)create or replace procedure raise_sal(empid number) as r emp_dup%rowtype; salary number; begin select * into r from emp_dup where empno=empid; salary:=r.sal*1.10;
update emp_dup set sal=salary where empno=empid; dbms_output.put_line('THE UPDATED SALARY WAS'||salary); exception when no_data_found then dbms_output.put_line('THERE WAS NO SUCH EMPLOYEE_ID EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS FOR THE SAME EMPLOYEE_ID'); end; b)declare empid number:=7499; begin raise_sal(empid); end; 9)/*INVOKING THE STORED PROCEDURE FROM A STORED PROCEDURE a) THE INVOKED PROCEURE UPDATED THE SALARY OF THE GIVEN EMPLOYEE NUMBER b) THE STORED PROCEDURE UPDATES ALL THE SALARIES OF ALL THE EMPLOYEE NUMBERS BY USING THE CURSORS IN THE STORED PROCEDURES*/ a)create or replace procedure raise_sal(empid number) as r emp_dup%rowtype; salary number; begin select * into r from emp_dup where empno=empid; salary:=r.sal*1.10; update emp_dup set sal=salary where empno=empid; dbms_output.put_line('THE UPDATED SALARY WAS'||salary); exception when no_data_found then dbms_output.put_line('THERE WAS NO SUCH EMPLOYEE_ID EXISTS'); when too_many_rows then dbms_output.put_line('MORE THAN ONE EMPLOYEE EXISTS FOR THE SAME EMPLOYEE_ID'); end;
b)create or replace procedure emp_proc as cursor emp_cur is select empno,ename from emp_dup; begin for emp_rec in emp_cur loop raise_sal(emp_rec.empno); exit when emp_cur%notfound; end loop; end emp_proc; SQL> execute emp_proc;
10)/*CREATE A NEW PROCEDURE THAT ADDS THE NEW EMPLOYEE FOR THE EMPLOYEE TABLE*/ create or replace procedure add_emp(v_empno in number,v_ename in varchar2,v_sal in number,v_job in varchar2,v_deptno in number) as begin insert into emp_dup(empno,ename,sal,job,deptno) values(v_empno,v_ename,v_sal,v_job,v_deptno); end add_emp; SQL> execute add_emp(123,'chsr',6000,'manager',50); SQL> select * from emp_dup;
11)/*UPDATING THE JOB BY PASSING THE EMPLOYEE NUMBER AS PARAMETER BY USING THE PROCEDURES*/ create or replace procedure upd_emp(v_empno in number,v_job out varchar2) as begin v_job:='president';
update emp_dup set job=v_job where empno=v_empno; end upd_emp; SQL> variable p_job varchar2(30); SQL> execute upd_emp(123,:p_job); SQL> print p_job; 12)/*CREATE A PROCEDURE FOR DELETING THE EMPLOYEE IN THE EMPLOYEE TABLE PASSING EMPNO AS IN PARAMETER*/ create or replace procedure del_emp(empid in number) as begin delete from emp_dup where empno=empid; end; SQL> execute del_emp(123); SQL> select * from emp_dup; 13)/*CREATING THE PROCEDURE SUCH THAT WHEN WE PASSING THE EMPLOYEE NUMBER AS IN PARAMETER,THE PROCDURE MUST RETURN THE CORRESPONDING SALARY AND JOB OF THAT EMPLOYEE NUMBER*/ create or replace procedure quer_emp(empid in number,v_sal out number,v_job out varchar2) as begin select sal,job into v_sal,v_job from emp_dup where empno=empid; end quer_emp; SQL> variable esal number SQL> variable ejob varchar2(30); SQL> execute quer_emp(7499,:esal,:ejob); SQL> print esal; SQL> print ejob; 1)/*CREATE A PROCEDURE BY THE NAME INCR AND INCREASE THE SALARY OF AN EMPLOYEE,THE EMPLOYEE NUMBER AND THE AMOUNT TO BE INCREMENTED IS PASSED AS PARAMETERS*/ create or replace procedure incr(emp_id in number,amt in number) as p emp_dup%rowtype;
increment_amount number; begin select * into p from emp_dup where empno=emp_id; increment_amount:=p.sal+amt; update emp_dup set sal=increment_amount where empno=emp_id; dbms_output.put_line('THE INCREMENTED AMOUNT WAS'||increment_amount); if p.sal is null then dbms_output.put_line('WE CANNOT UPDATE THE AMOUNT FOR THE EMPLOYEEID'); end if; end incr; SQL> execute incr(7369,1000); create or replace procedure get_order_lines(order_number in number,output1 out varchar2) as cursor c2(header_id in number) is select line_number,substr(ordered_item,1,20) item, ordered_quantity,unit_selling_price from oe_order_lines_all oel where HEADER_ID = header_id; line_number number(10); ordered_item varchar2(25); ordered_qty number(10); unit_selling_price number(10); HEADER_ID NUMBER(10); begin SELECT HEADER_ID INTO HEADER_ID FROM OE_ORDEr_HEADERS_ALL WHERE ORDER_NUMBER = ORDER_NUMBER; DBMS_OUTPUT.PUT_LINE(HEADER_ID); open c2(HEADER_ID); loop fetch c2 into line_number,ordered_item,ordered_qty,unit_selling_price; dbms_output.put_line(line_number||' '||ordered_item||' '||ordered_qty||' '|| unit_selling_price); output1:= line_number||' '||ordered_item||' '||ordered_qty||' '||unit_selling_price ; end loop; close c2;
exception when no_data_found then null; end; var t1 number; create or replace procedure get_header_id(order_number number, output2 out number) is header_id number(10); ord_number number(10); begin select order_number into ord_number from dual; select header_id into header_id from oe_order_headers_all where order_number= ord_number; dbms_output.put_line(header_id); output2 := header_id; end; var t1 varchar2(1000);
create or replace procedure get_order_lines(header_id in number,output1 out varchar2) as head_id number(10); line_number number(10); ordered_item varchar2(25); ordered_qty number(10); unit_selling_price number(10); order_amnt number(15);
BEGIN select header_id into head_id from dual; DBMS_OUTPUT.PUT_LINE(HEAD_ID); select line_number,substr(ordered_item,1,20) item,ordered_quantity,unit_selling_price,nvl((ordered_quantity*unit_selling_price),0) Amount into line_number,ordered_item,ordered_qty,unit_selling_price,order_amnt from oe_order_lines_all where header_id = head_id ; dbms_output.put_line(line_number||' '||ordered_item||' '||ordered_qty||' '|| unit_selling_price||' '||order_amnt);
output1:= line_number||' '||ordered_item||' '||ordered_qty||' '||unit_selling_price||' '|| order_amnt ; exception when NO_DATA_FOUND then null; end;