在 Oracle PL/SQL 中获取具有索引而不是列名的字段

Posted

技术标签:

【中文标题】在 Oracle PL/SQL 中获取具有索引而不是列名的字段【英文标题】:Get fields with index instead name of column in Oracle PL/SQL 【发布时间】:2020-01-31 22:16:20 【问题描述】:

有人知道如何通过索引访问 plsql oracle 游标字段。

是否可以通过索引而不是列名来获取表的字段?

提前致谢。

declare
  cursor c_user is 
    select * 
      from users
     where age > 20;
begin
    for u in c_user loop
        dbms_output.put_line(u.lastname||' '||u.firstname);
    end loop; 
end;

例子

declare
  cursor c_user is 
    select * 
      from users
     where age > 20;
begin
    for u in c_user loop
        dbms_output.put_line(u.1||' '||u.2);
    end loop; 
end;

【问题讨论】:

你真正想要达到什么目的?听起来您可能正在寻找uses dbms_sql 的方法,但不知道您为什么不想使用列名,很难说。 【参考方案1】:

如果您问是否可以按位置引用 PL/SQL 记录中的字段,答案是否定的。您只能通过名称引用它们。

顺便说一下,在数据库世界中,索引通常是指一个数据库对象,它存储表中的键值以及它们的物理位置,以便快速检索,而 是,哦,没关系,所以 “通过索引获取表的字段” 让我有点困惑,因为我认为您的意思不是存储数据的优化查找。抱歉,如果我有这个错误。

【讨论】:

【参考方案2】:

试试这样的:

declare
cursor Inx_Cur(P_Indx Number) is select 
decode(P_Indx,1,ACCOUNTNO,2,ACCOUNTNAME,3,ACCOUNTTYPE) My_field
from accounts;
begin
for Rec in Inx_Cur(3) -- pass the required index as 
parameter
loop
 dbms_output.put_line('My_field : '||Rec.My_field);
end loop;
end;

【讨论】:

以上是关于在 Oracle PL/SQL 中获取具有索引而不是列名的字段的主要内容,如果未能解决你的问题,请参考以下文章

Oracle --- PL/SQL

Oracle --- PL/SQL

Oracle --- PL/SQL

如何在 pl\sql oracle db 中运行具有给定参数的 exe 文件

Oracle Pl/sql 从多个查询中返回一个游标

PL/SQL集合(table)嵌套表操作实例讲解实例