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

时间:2013-12-13 18:33:10

标签: sql oracle plsql

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

表格clazzes

Name Type          Nullable Default Comments 
---- ------------- -------- ------- -------- 
ID   NUMBER(10)                              
NAME VARCHAR2(100) Y        

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;

例外:

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

1 个答案:

答案 0 :(得分: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);

或使用您的选择:

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