PL/SQL:选择ORA-00947

PL/SQL:选择ORA-00947,sql,oracle,plsql,Sql,Oracle,Plsql,我正在使用Oracle Database 10g Express Edition 10.2.0.1.0版-生产 我创建了一个对象类型: SQL> create or replace type TestObject as Object ( 2 id INTEGER, 3 name VARCHAR2(10) 4 ); 5 / 然后我创建了一个包含该类型的int对象的表: SQL> CREATE TABLE TestTable of TestTable; 我用一

我正在使用Oracle Database 10g Express Edition 10.2.0.1.0版-生产

我创建了一个对象类型:

SQL> create or replace type TestObject as Object (
  2  id INTEGER,
  3  name VARCHAR2(10)
  4  );
  5  /
然后我创建了一个包含该类型的int对象的表:

SQL> CREATE TABLE TestTable of TestTable;
我用一些数据填充表格:

SQL> INSERT INTO TestTable VALUES (10, 'John');
现在,如果我想在PL/SQL中执行选择:

SQL> declare
  2  aTest TestObject;
  3  begin
  4  select * into aTest from TestTable;
  5  end;
  6  /
我得到错误ORA-00947(没有足够的值):

但是TestTable包含TestObject类型的对象,变量aTest也是TestObject类型的。。。?值的数量不匹配在哪里?

试试这个

select TestObject(id,name)  from TestTable
/
对我来说,这很有效:

declare
 ta TestObject;
begin
 select TestObject(t.id, t.name) into ta from TestTable t;
end;
/
declare
 ta TestObject;
begin
 select TestObject(t.id, t.name) into ta from TestTable t;
end;
/