PL / SQL:SELECT INTO引发ORA-00947

时间:2013-05-24 09:51:52

标签: sql oracle plsql

我正在使用Oracle数据库10g快捷版10.2.0.1.0版 - 生产

我创建了一个对象类型:

SQL> create or replace type TestObject as Object (
  2  id INTEGER,
  3  name VARCHAR2(10)
  4  );
  5  /

然后我创建一个表包含该类型的obint:

SQL> CREATE TABLE TestTable of TestTable;

我用一些数据填充表格:

SQL> INSERT INTO TestTable VALUES (10, 'John');

现在,如果我想在PL / SQL中执行SELECT:

SQL> declare
  2  aTest TestObject;
  3  begin
  4  select * into aTest from TestTable;
  5  end;
  6  /

我收到错误ORA-00947(值不够):

select * into aTest from TestTable;
                    *
ERROR en línea 4:
ORA-06550: línea 4, columna 21:
PL/SQL: ORA-00947: no hay suficientes valores
ORA-06550: línea 4, columna 1:
PL/SQL: SQL Statement ignored

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

2 个答案:

答案 0 :(得分:2)

对我来说这很有效:

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

答案 1 :(得分:1)

试试这个..

select TestObject(id,name)  from TestTable
/