plsql to update salary of employee 20% manager, 15% salesman and 10% for others.
declarejob emp.job%type;esal emp.sal%type;eno emp.eit%type;inc number(7,2);begineno:=: eid;select job into ejob from emp where eid=eno;if ejob='Manager' theninc:=0.2;update emp set salary =salary+salary * inc where eid=eno;dbms_output.put_line('Manager sal is updated');else ifinc:=0.15;update emp set salary=salary+salary * inc where eid=eno;dbms_output.put_line('others sal is updated);end if;end;
Write a Procedure for Fibonacci series
create or replace procedure fib(n number) asa number:=0;b number:=1;c number;i number;begindbms_output.put_line(a);dbms_output.put_line(b);for i in 3..n loopc:=a+b;a:=b;b:=c;dbms_output.put_line(c);end loop;end;Procedure created.declaren number(10);beginn:=:n;fib(n);end;input: 5output:01123Statement processed.
Update sal using sal
create or replace procedure empupdate(eno emp.empno%type, inc number)asbeginupdate emp set sal=sal+inc where empno=eno;commit;dbms_output.put_line('update successfully');end;declareeno emp.empno%type;inc number;begineno:=:eno;inc:=:inc;empupdate(eno,inc);end;select * from emp;
Swapping of two numbers
t number;begint:=a;a:=b;b:=t;end;declarea number:=:a;b number:=:b;begindbms_output.put_line('before swapping'||a||','||b);swap(a,b);dbms_output.put_line('after swapping'||a||','||b);end;
Function to find max of two numbers
DECLAREa number;b number;c number;FUNCTION findMax(x IN number, y IN number)RETURN numberISz number;BEGINIF x > y THENz:= x;ELSEZ:= y;END IF;RETURN z;END;BEGINa:=:a;b:=:b;c := findMax(a, b);dbms_output.put_line(' Maximum of two nums is: ' || c);END;
Function for total sal payable to emps
CREATE OR REPLACE FUNCTION get_total_salRETURN NUMBERIStotalsal NUMBER := 0;BEGINSELECT SUM(sal) INTO totalsalFROM emp;RETURN totalsal;END;declaresal NUMBER := 0;BEGINsal := get_total_sal ();DBMS_OUTPUT.PUT_LINE('Sal: ' || sal);END;Sal: 35740
Trigger that dosent allow salary to be updated if commission is null
create or replace trigger "empupdatesal" beforeupdate of sal on empfor each rowbeginif :old.commission is null thenraise_application_error(-20100,'commission is null, sal cannot be updated');end if;end;
Trigger that does not allow duplicates
CREATE OR REPLACE TRIGGER "DEPT_T1"BEFOREinsert on "DEPT"for each rowdeclarea number;beginif(:new.deptno is Null) thenraise_application_error(-20001,'error::deptno cannot be null');elseselect count(*) into a from dept where deptno=:new.deptno;if(a=1) thenraise_application_error(-20002,'error:: cannot have duplicate deptno');end if;end if;end;
Cursor program to print emp number, name, etc
DECLAREcursor c is select empno, ename, deptno, sal from emp ;i emp.empno%type;j emp.ename%type;k emp.deptno%type;l emp.sal%type;BEGINopen c;dbms_output.put_line('Empno, name, deptno, salary of employees are:= ');loopfetch c into i, j, k, l;exit when c%notfound;dbms_output.put_line(i||' '||j||' '||k||' '||l);end loop;close c;END;
Procedure for factorial
create or replace procedure factorial(n in number, fact out number) asi int :=1;beginfact:=1;while i<=n loopfact :=fact*i;i:=i+1;end loop;end;declaren int;fact int;beginn:=:n;factorial(n,fact);dbms_output.put_line('Factorial is:'||fact);end;