Fetch cursor to three variables : Fetch « Cursor « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL> CREATE TABLE employee
  2  (employee_id         NUMBER(7),
  3   last_name           VARCHAR2(25),
  4   first_name          VARCHAR2(25),
  5   userid              VARCHAR2(8),
  6   start_date          DATE,
  7   comments            VARCHAR2(255),
  8   manager_id          NUMBER(7),
  9   title               VARCHAR2(25),
 10   department_id       NUMBER(7),
 11   salary              NUMBER(11, 2),
 12   commission_pct      NUMBER(4, 2)
 13  );

Table created.

SQL>
SQL> INSERT INTO employee VALUES (1, 'V', 'Ben', 'cv',to_date('03-MAR-90 8:30', 'dd-mon-yy hh24:mi'),NULL, NULL, 'PRESIDENT', 50, 2500, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (2, 'N', 'Haidy', 'ln', '08-MAR-90', NULL,1, 'VP, OPERATIONS', 41, 1450, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (3, 'N', 'Molly', 'mn', '17-JUN-91',NULL, 1, 'VP, SALES', 31, 1400, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (4, 'S', 'Mark', 'mq', '07-APR-90',NULL, 1, 'VP, FINANCE', 10, 1450, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (5, 'R', 'AUDRY', 'ar', '04-MAR-90',NULL, 1, 'VP, ADMINISTRATION', 50, 1550, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (6, 'U', 'MOLLY', 'mu', '18-JAN-91',NULL, 2, 'WAREHOUSE MANAGER', 41, 1200, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (7, 'M', 'ROBERTA', 'rm', '14-MAY-90',NULL, 2, 'WAREHOUSE MANAGER', 41, 1250, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (8, 'B', 'BEN', 'ry', '07-APR-90', NULL, 2,'WAREHOUSE MANAGER', 41, 1100, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (9, 'C', 'Jane', 'ac', '09-FEB-92',NULL, 2, 'WAREHOUSE MANAGER', 41, 1300, NULL);

1 row created.

SQL> INSERT INTO employee VALUES (10, 'H', 'Mart', 'mh', '27-FEB-91', NULL, 2,'WAREHOUSE MANAGER', 41, 1307, NULL);

1 row created.

SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE select_emp
  2     (p_emp_id_num NUMBER DEFAULT NULL,
  3     p_last_name_txt VARCHAR2 DEFAULT NULL,
  4     p_first_name_txt VARCHAR2 DEFAULT NULL,
  5     p_start_date DATE DEFAULT NULL,
  6     p_dept_num NUMBER DEFAULT NULL) IS
  7     CURSOR cur_emp IS
  8        SELECT last_name, first_name, salary
  9        FROM   employee
 10        WHERE  employee_id         LIKE p_emp_id_num     || '%'
 11        AND    last_name  LIKE p_last_name_txt  || '%'
 12        AND    first_name LIKE p_first_name_txt || '%'
 13        AND    start_date          LIKE p_start_date     || '%'
 14        AND    department_id       LIKE p_dept_num       || '%';
 15
 16     lastName  employee.last_name%TYPE;
 17     lv_first_name_txt employee.first_name%TYPE;
 18     lv_salary_num     employee.salary%TYPE;
 19  BEGIN
 20     OPEN cur_emp;
 21     FETCH cur_emp INTO lastName, lv_first_name_txt, lv_salary_num;
 22     CLOSE cur_emp;
 23  END;
 24  /

Procedure created.

SQL>
SQL>
SQL> drop table employee;

Table dropped.








25.4.Fetch
25.4.1.Fetch data into PL/SQL table
25.4.2.Fetch cursor value into column type variable
25.4.3.Fetch cursor till cursorName%NOTFOUND
25.4.4.Using a simple UPDATE statement without locking for rows fetched from Cursors
25.4.5.To lock all the records while you're working on them. This is done using a SELECT FOR UPDATE command
25.4.6.Fetching Across Commits
25.4.7.Fetching Across Commits, Example 2
25.4.8.Populating a Record with FETCH INTO
25.4.9.cursor bulk
25.4.10.Compare the performance differences between row-at-a-time processing and bulk processing
25.4.11.Raise no data found exception if cursor is empty
25.4.12.Fetch cursor to three variables
25.4.13.Nested cursor open
25.4.14.Fetch cursor till notfound
25.4.15.Fetch cursor to table collection of row type
25.4.16.Fetch cursor value to three variables
25.4.17.Fetch row by row