Connecting Tech Pros Worldwide Forums | Help | Site Map

PL/SQL-PROCEDURES - 2

debasisdas's Avatar
Moderator
 
Join Date: Dec 2006
Location: Bangalore ,India
Posts: 7,569
#1   May 30 '07
SAMPLE EXAMPLE TO SHOW USE OF PROCEDURE WITH IN MODE
================================================== ===
Expand|Select|Wrap|Line Numbers
  1. CREATE OR REPLACE PROCEDURE REVNUM (NUM NUMBER)
  2.  IS
  3.  REV INTEGER;
  4.  NUM1 NUMBER;
  5.  BEGIN
  6.  NUM1:=NUM;
  7.  REV:=0;
  8.  WHILE NUM1>0
  9.  LOOP
  10.  REV:=REV * 10 + MOD(NUM1,10);
  11.  NUM1:=TRUNC(NUM1/10);
  12.  END LOOP;
  13.  DBMS_OUTPUT.PUT_LINE(REV);
  14.  END REVNUM;
  15.  
SAMPLE PROGRAM TO SHOW USE OF EXECUTE IMMEDIATE WITH IN PROCEDURE & PROCEDURE WITH DEFAULT PARAMETER.
================================================== ===

Expand|Select|Wrap|Line Numbers
  1. CREATE OR REPLACE PROCEDURE delete_rows
  2. (
  3. table_name IN VARCHAR2,
  4. condition IN VARCHAR2 DEFAULT NULL
  5. )
  6. AS
  7. where_clause VARCHAR2(100) := ' WHERE ' || condition;
  8. BEGIN
  9. IF condition IS NULL THEN where_clause := NULL;
  10. END IF;
  11. --EXECUTE IMMEDIATE is used to dynamically execute any SQL statment at run time.
  12. EXECUTE IMMEDIATE 'DELETE FROM ' || table_name || where_clause;
  13. END;
  14.  

SAPMLE PROCEDURE WITH OUT PARAMETERS
=======================================
Expand|Select|Wrap|Line Numbers
  1. create or replace procedure display
  2. (
  3. eno in emp.empno%type,
  4. name out emp.ename%type,
  5. job out emp.job%type, 
  6. salary out emp.sal%type, 
  7. location out dept.loc%type
  8. )
  9. is
  10. begin
  11. --the values are selected into the out paramater.
  12. select ename,job,sal,loc into name,job,salary,location from emp e,dept d
  13. where e.deptno=d.deptno AND empno=eno;
  14. end;
  15.  
NOTE:----If a procedure contains any OUT or IN OUT parameter, it can't be executed from SQL prompt it must be called from with in an anonymous block.

To execute the above procedure.

Expand|Select|Wrap|Line Numbers
  1. declare
  2. name emp.ename%type;
  3. job emp.job%type;
  4. salary emp.sal%type;
  5. location dept.loc%type;
  6. begin
  7. --only the frist parameter accepts the value and the rest 4 returns after processing.
  8. display(7839,name,job,salary,location);
  9. dbms_output.put_line(name||'  '||job||'  '||salary||'  '||location);
  10. end;
  11.  

Also check PL/SQL-PROCEDURES - 3



Reply