PLS-00382: expression is of wrong type : ROWTYPE « PL SQL Data Types « Oracle PL/SQL Tutorial





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> DECLARE
  2     TYPE type_emp_rec1 IS RECORD
  3        (emp_last_name_txt  employee.last_name%TYPE,
  4         emp_first_name_txt employee.first_name%TYPE);
  5     TYPE type_emp_rec2 IS RECORD
  6        (emp_last_name_txt  employee.last_name%TYPE,
  7         emp_first_name_txt employee.first_name%TYPE);
  8     lv_emp_type_rec1   type_emp_rec1;
  9     lv_emp_type_rec2   type_emp_rec2;
 10     lv_emp_type_rec3   type_emp_rec2;
 11  BEGIN
 12     lv_emp_type_rec1 := lv_emp_type_rec2;
 13     lv_emp_type_rec1.emp_last_name_txt := lv_emp_type_rec2.emp_last_name_txt;
 14     lv_emp_type_rec2 := lv_emp_type_rec3;
 15  END;
 16  /
   lv_emp_type_rec1 := lv_emp_type_rec2;
                       *
ERROR at line 12:
ORA-06550: line 12, column 24:
PLS-00382: expression is of wrong type
ORA-06550: line 12, column 4:
PL/SQL: Statement ignored


SQL>
SQL> drop table employee;

Table dropped.

SQL>










21.27.ROWTYPE
21.27.1.Declare ROWTYPE variable
21.27.2.Reference attribute in a ROWTYPE variable
21.27.3.Select value into the %ROWTYPE type variable
21.27.4.Using a Weak REF CURSOR and %ROWTYPE
21.27.5.Defining and using a cursor-oriented record
21.27.6.INSERT statement involving entire records
21.27.7.UPDATE statement involving entire records
21.27.8.Use rowtype with object table
21.27.9.rowtype.iterations
21.27.10.Use table column type as the record attribute type
21.27.11.Select * into table%rowtype
21.27.12.PLS-00382: expression is of wrong type