sql - PL/SQL : SELECT INTO raises ORA-00947

标签 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  /

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

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 类型 ... ¿值的数量不匹配在哪里?

最佳答案

对我来说这很有效:

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

关于sql - PL/SQL : SELECT INTO raises ORA-00947,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732199/

相关文章:

oracle - 物化 View 创建速度很快,但刷新需要几个小时

c - 是否可以重用 Oracle native 编译的共享库?

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

java - rs.last() 给出 Invalid operation for forward only resultset : last

java - 在 SQL DB 中插入空 java.sql.Date 的更优雅的方法

oracle - 从 PL/SQL block 运行 SCRIPT

java - 将 Java vector 写入分隔文件

sql - 从两个表到单个 View 的 T-SQL 层次结构

java - 使用 Java 将媒体放入 Access 数据库

MySQL:选择并求和特定列中的先前值