You are on page 1of 4

CREATE OR REPLACE PROCEDURE ModeTest( p_InParameter IN NUMBER, p_OutParameter OUT NUMBER, p_InOutParameter IN OUT NUMBER) IS v_LocalVariable NUMBER; BEGIN

v_LocalVariable := p_InParameter; DBMS_OUTPUT.PUT_LINE('LOCAL Parameter ' --p_InParameter := 8; --v_LocalVariable := p_OutParameter; p_OutParameter := p_InOutParameter; DBMS_OUTPUT.PUT_LINE(' OUT Parameter '

v_LocalVariable);

p_OutParameter);

p_InOutParameter := 7; DBMS_OUTPUT.PUT_LINE('IN Parameter ' p_InParameter); DBMS_OUTPUT.PUT_LINE('IN OUT Parameter ' p_InOutParameter); END ModeTest;

DECLARE x NUMBER(5,2) := 123.45; y NUMBER := 1; z NUMBER := 10; BEGIN DBMS_OUTPUT.PUT_LINE('X(Before) = ' DBMS_OUTPUT.PUT_LINE('Y(Before) = ' DBMS_OUTPUT.PUT_LINE('Z(Before) = ' ModeTest(x,y,z); DBMS_OUTPUT.PUT_LINE('X(After) = ' DBMS_OUTPUT.PUT_LINE('Y(After) = ' DBMS_OUTPUT.PUT_LINE('Z(After) = ' END; -----------------------------------------------------CREATE OR REPLACE FUNCTION CallFunc(p1 IN VARCHAR2) RETURN VARCHAR2 AS BEGIN DBMS_OUTPUT.PUT_LINE('CallFunc called with ' p1); RETURN p1; END CallFunc; select CallFunc('haii') from dual; ---------------------------------------------------------CREATE OR REPLACE FUNCTION mypi RETURN NUMBER IS BEGIN NULL; RETURN 3.14; END; BEGIN DBMS_OUTPUT.PUT_LINE('value of pi is ' mypi()); x); y); z); x); y); z);

END; ---------------------------------------------------------CREATE or replace TABLE session1 ( department CHAR(3), course NUMBER(3), description VARCHAR2(2000), max_lecturer NUMBER(3), current_lecturer NUMBER(3), num_credits NUMBER(1), room_id NUMBER(5) );

INSERT INTO session1(department, course, description, max_lecturer, current_lect urer, num_credits, room_id)VALUES ('HIS', 101, 'History 101', 30, 11, 4, 20000); INSERT INTO session1(department, course, description, max_lecturer, current_lect urer, num_credits, room_id) VALUES ('HIS', 301, 'History 301', 30, 0, 4, 20004); INSERT INTO session1(department, course, description, max_lecturer, current_lect urer, num_credits, room_id) VALUES ('CS', 101, 'Computer Science 101', 50, 0, 4, 20001 ); CREATE OR REPLACE FUNCTION ClassInfo ( p_Department session1.department%TYPE, p_Course session1.course%TYPE) RETURN VARCHAR2 IS studentCount NUMBER; studentMax NUMBER; v_PercentFull NUMBER; BEGIN SELECT current_lecturer, max_lecturer INTO studentCount, studentMax FROM session1 WHERE department = p_Department AND course = p_Course; v_PercentFull := studentCount / studentMax * 100; IF v_PercentFull = 100 THEN RETURN 'Full'; ELSIF v_PercentFull > 80 THEN RETURN 'Some Room'; ELSIF v_PercentFull > 60 THEN RETURN 'More Room'; ELSIF v_PercentFull > 0 THEN RETURN 'Lots of Room'; ELSE RETURN 'Empty'; END IF; END ClassInfo; /

--------------------------------------------------------------------------------

---------------------IMPLICIT CURSOR EXAMPLE (SQL%NOTFOUND) CREATE TABLE dept_temp AS SELECT * FROM dept; DECLARE dept_no NUMBER(4) := 50; BEGIN DELETE FROM dept_temp WHERE deptno = dept_no ; IF SQL%NOTFOUND THEN -- delete succeeded INSERT INTO dept_temp VALUES (1, 'Personnel','INDIA'); END IF; END; ---------------------------------------------IMPLICIT CURSOR EXAMPLE (SQL%ROWCOUNT) CREATE TABLE employees_temp AS SELECT * FROM emp; DECLARE mgr_no NUMBER(6) := 7788; BEGIN DELETE FROM employees_temp WHERE mgr = mgr_no; DBMS_OUTPUT.PUT_LINE('Number of employees deleted: ' TO_CHAR(SQL %ROWCOUNT)); END; ----------------------------------------------------------EXPLICIT CURSOR EXAMPLE declare emp_rec emp_tbl%rowtype; CURSOR emp_cur IS SELECT * FROM emp_tbl WHERE sal > 10; BEGIN OPEN emp_cur; FETCH emp_cur INTO emp_rec; dbms_output.put_line (emp_rec.ename ' ' emp_rec.empno); CLOSE emp_cur; END; -----------------------------------------------------EXPLICIT CURSOR EXAMPLE SIMPLE LOOP DECLARE CURSOR emp_cur IS SELECT ename, empno, sal FROM emp_tbl; emp_rec emp_cur%rowtype; BEGIN IF NOT emp_cur%ISOPEN THEN OPEN emp_cur; END IF; LOOP FETCH emp_cur INTO emp_rec; EXIT WHEN emp_cur%NOTFOUND; dbms_output.put_line(emp_rec.ename ' ' emp_rec.empno ' ' emp_rec.sal); END LOOP; END; --------------------------------------------------------

EXPLICIT CURSOR EXAMPLE WHILE LOOP DECLARE CURSOR emp_cur IS SELECT ename, empno, sal FROM emp_tbl;

emp_rec emp_cur%rowtype; BEGIN IF NOT emp_cur%ISOPEN THEN OPEN emp_cur; END IF; FETCH emp_cur INTO emp_rec ; WHILE emp_cur%FOUND LOOP dbms_output.put_line(emp_rec .ename ' ' emp_rec .empno ' ' emp_rec .sal); FETCH emp_cur INTO emp_rec ; END LOOP; end; ------------------------------------------DECLARE CURSOR emp_cur IS SELECT ENAME,SAL FROM EMP; emp_rec emp_cur%rowtype; BEGIN FOR emp_rec in emp_cur LOOP dbms_output.put_line(emp_rec.ename ' ' emp_rec.sal); END LOOP; END; ---------------------------------------------------PARAMETERISED CURSOR declare cursor empcursor(empn in number) is select * from emp where empno=empn; empvar emp%rowtype; Begin Dbms_output.put_line('getting records for 7521'); open empcursor(7521); Loop Fetch empcursor into empvar; Exit when empcursor%notfound; dbms_output.put_line('empname :' empvar.ename); dbms_output.put_line('empsal :' empvar.sal); end loop; close empcursor; End;

You might also like