Use out parameter to get value out : Parameter OUT « Stored Procedure Function « Oracle PL / SQL






Use out parameter to get value out

    
SQL> CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
  2                    ENAME VARCHAR2(10),
  3                    JOB VARCHAR2(9),
  4                    MGR NUMBER(4),
  5                    HIREDATE DATE,
  6                    SAL NUMBER(7, 2),
  7                    COMM NUMBER(7, 2),
  8                    DEPTNO NUMBER(2));

Table created.

SQL>
SQL> INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10);

1 row created.

SQL> INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);

1 row created.

SQL> INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30);

1 row created.

SQL> INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20);

1 row created.

SQL> INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

1 row created.

SQL>
SQL> select * from emp;

     EMPNO Employee Name JOB              MGR HIREDATE      Salary       COMM     DEPTNO
---------- ------------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH         CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN         SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD          SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES         MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN        SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE         MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK         MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT         ANALYST         7566 09-DEC-82       3000                    20
      7839 KING          PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER        SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS         CLERK           7788 12-JAN-83       1100                    20

     EMPNO Employee Name JOB              MGR HIREDATE      Salary       COMM     DEPTNO
---------- ------------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES         CLERK           7698 03-DEC-81        950                    30
      7902 FORD          ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER        CLERK           7782 23-JAN-82       1300                    10

14 rows selected.

SQL>
SQL>
SQL> create or replace procedure emp_lookup(
  2    p_empno in     number,
  3    o_ename    out emp.ename%type,
  4    o_sal      out emp.sal%type ) as
  5  begin
  6    select ename, sal
  7      into o_ename, o_sal
  8      from emp
  9        where empno = p_empno;
 10  exception
 11    when NO_DATA_FOUND then
 12      o_ename := 'NULL';
 13      o_sal := -1;
 14    end emp_lookup;
 15  /

Procedure created.

SQL>
SQL> set serverout on
SQL>
SQL> declare
  2   l_ename emp.ename%type;
  3   l_sal emp.sal%type;
  4  begin
  5   emp_lookup( 7782, l_ename, l_sal );
  6   dbms_output.put_line( 'Ename = ' || l_ename );
  7   dbms_output.put_line( 'Sal = ' || l_sal );
  8  end;
  9  /
Ename = CLARK
Sal = 2450

PL/SQL procedure successfully completed.

SQL>
SQL> drop table emp;

Table dropped.

   
    
    
  








Related examples in the same category

1.Define 'out' parameters
2.Using out parameter
3.Parameter Modes
4.Out with NOCOPY modifier.
5.Unhandled exceptions and OUT variables
6.behavior of unhandled exceptions and OUT variables.
7.Behavior of OUT variables and raised exceptions
8.Using Output Parameters
9.This procedure takes a single OUT. Out parameter is assignable
10.Out parameter is assignable