oracle – 保留字NUMBER用作列名,导致Cursor声明错误

……至少我认为那是问题所在.

我正在编写一个函数,其中包含一个访问表的游标声明,其中一列是保留字NUMBER(是的,我知道..).该函数在编译时遇到问题:

错误(16,10):PL / sql:ORA-06552:PL / sql:编译单元分析终止ORA-06553:PLS-488:无效变量声明:对象’NUMBER’必须是类型或子类型

我的代码看起来像:

CURSOR my_cur 
IS 
    SELECT "NUMBER",col2,col3
    FROM tb1_x;

为了确保这是问题,我将代码更改为

CURSOR my_cur 
IS 
    SELECT 'NUMBER','col2','col3'
    FROM dual;

它汇编得很好,但显然这不是我想要的.

不幸的是,我没有选择更改列名(叹气)和记录

SELECT "NUMBER",col3
    FROM tb1_x;

在正常的sql执行中正常工作.

无论如何,我可以解决这个问题?任何帮助深表感谢!

解决方法

我们也可以在游标中创建记录以及使用列.从游标中获取数据我对我感到惊讶,因为我之前使用过它.

Create table temp2("number" integer,id integer,name varchar2(200));
insert into temp2 values(1,1,'Gaurav Soni'); 
insert into temp2 values(2,2,'Niharika Saraf');
Commit;


DECLARE
  type abc is record(
  "number" number,id       NUMBER,name     varchar2(200));

 v_rec abc;
 TYPE v_cur IS REF CURSOR;

 cur    v_cur;
 v_temp INTEGER;
BEGIN
  OPEN cur FOR
     SELECT "number",id,name FROM temp2;
 LOOP
   FETCH cur  INTO v_rec;
    EXIT when cur%notfound;

  DBMS_OUTPUT.put_line('number is ' || v_rec."number");
  DBMS_OUTPUT.put_line('id is ' || v_rec.id);
  DBMS_OUTPUT.put_line('name is ' || v_rec.name);

  end loop;
CLOSE cur;

end;

产量

number is 1
id is 1
name is Gaurav Soni
number is 2
id is 2
name is Niharika Saraf

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...