Oracle invalid use of type name or subtype name

oracle, plsql, sql

Solution

You should declare a variable with the specified type. And instantiate your variable with a constructor:

declare
type clazzes_row_type is record
(clazz_rownum number,
 clazz_id clazzes.id%type,
 clazz_name clazzes.name%type);

myvariable clazzes_row_type;

begin
  myvariable := clazzes_row_type(111, null, null);

or with your select:

begin
  select 111,id,name into myvariable from clazzes where name ='leo1';

Problem

What is wrong with the this block am using? please help to solve this. Only one row will be selected based on the where clause. Table clazzes ``` Name Type Nullable Default Comments ---- ------------- -------- ------- -------- ID NUMBER(10) NAME VARCHAR2(100) Y ``` PL/SQL Block : ``` declare type clazzes_row_type is record (clazz_rownum number, clazz_id clazzes.id%type, clazz_name clazzes.name%type); begin clazzes_row_type.clazz_rownum :=111; select id,name into clazzes_row_type.clazz_id,clazzes_row_type.clazz_name from clazzes where name ='leo1'; dbms_output.put_line(clazzes_row_type.clazz_id); dbms_output.put_line(clazzes_row_type.clazz_rownum); dbms_output.put_line(clazzes_row_type.clazz_name); end; ``` Exception : ``` ORA-06550: line 8, column 1: PLS-00330: invalid use of type name or subtype name ORA-06550: line 8, column 1: PL/SQL: Statement ignored ORA-06550: line 9, column 21: PLS-00330: invalid use of type name or subtype name ORA-06550: line 9, column 75: PL/SQL: ORA-00904: : invalid identifier ORA-06550: line 9, column 1: PL/SQL: SQL Statement ignored ORA-06550: line 11, column 22: PLS-00330: invalid use of type name or subtype name ORA-06550: line 11, column 1: PL/SQL: Statement ignored ORA-06550: line 12, column 22: PLS-00330: invalid use of type name or subtype name ORA-06550: line 12, column 1: PL/SQL: Statement ignored ORA-06550: line 13, column 22: PLS-00330: invalid use of type name or subtype name ORA-06550: line 13, column 1: PL/SQL: Statement ignored ```

Original source