Oracle无效使用类型名称或子类型名称

sun*_*leo 4 sql oracle plsql

我正在使用这个块有什么问题?请帮忙解决这个问题.根据where子句只选择一行.

表clazzes

Name Type          Nullable Default Comments 
---- ------------- -------- ------- -------- 
ID   NUMBER(10)                              
NAME VARCHAR2(100) Y        
Run Code Online (Sandbox Code Playgroud)

PL/SQL块:

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;
Run Code Online (Sandbox Code Playgroud)

例外:

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
Run Code Online (Sandbox Code Playgroud)

Don*_*gyi 9

您应该声明具有指定类型的变量.并使用构造函数实例化您的变量:

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);
Run Code Online (Sandbox Code Playgroud)

或者用你的选择:

begin
  select 111,id,name into myvariable from clazzes where name ='leo1';
Run Code Online (Sandbox Code Playgroud)