如何在Oracle PL/SQL游标FOR循环中使用大量未命名列?

如何在Oracle PL/SQL游标FOR循环中使用大量未命名列?,oracle,for-loop,indexing,cursor,Oracle,For Loop,Indexing,Cursor,我的光标定义如下: DECLARE CURSOR cLoop IS SELECT refcl ||'_TEST' FROM t_select; BEGIN FOR rI IN cLoop LOOP dbms_output.put_line('Test: ' || rI.XXXXXXXX); END LOOP; END 光标将给出以下内容(例如): 当您查看时,我没有为表达式“refcl | |“u TEST”(使用“SELECT exp AS column_name

我的光标定义如下:

DECLARE
  CURSOR cLoop IS 
   SELECT refcl ||'_TEST' FROM t_select;
BEGIN
  FOR rI IN cLoop LOOP
    dbms_output.put_line('Test: ' || rI.XXXXXXXX);
  END LOOP;
END
光标将给出以下内容(例如):

当您查看时,我没有为表达式
“refcl | |“u TEST”
(使用“
SELECT exp AS column_name
”)定义新列,因此我无法处理创建的动态字段数据


你们知道我应该用什么来代替XXXXXXXX吗?

创建派生列时,必须使用别名。如果没有别名,就无法使用它。因此,您的问题的解决方案将是

DECLARE
  CURSOR cLoop IS 
   SELECT refcl ||'_TEST' col1 FROM t_select;
BEGIN
  FOR rI IN cLoop 
   LOOP
    dbms_output.put_line('Test: ' || rI.col1);
  END LOOP;
END;
或者,第二个选项是在显示dervied列时使其如下所示:

DECLARE
      CURSOR cLoop IS 
       SELECT refcl FROM t_select;
    BEGIN
      FOR rI IN cLoop 
       LOOP
        dbms_output.put_line('Test: ' || rI.refc1||'_TEST');
      END LOOP;
    END;

创建派生列时,必须使用别名
alias
it。如果没有别名,就无法使用它。因此,您的问题的解决方案将是

DECLARE
  CURSOR cLoop IS 
   SELECT refcl ||'_TEST' col1 FROM t_select;
BEGIN
  FOR rI IN cLoop 
   LOOP
    dbms_output.put_line('Test: ' || rI.col1);
  END LOOP;
END;
或者,第二个选项是在显示dervied列时使其如下所示:

DECLARE
      CURSOR cLoop IS 
       SELECT refcl FROM t_select;
    BEGIN
      FOR rI IN cLoop 
       LOOP
        dbms_output.put_line('Test: ' || rI.refc1||'_TEST');
      END LOOP;
    END;

不使用列别名编写代码是个糟糕的主意。您确实希望为列名添加别名

如果您真的,真的决心避免出于某种原因使用别名,您可以使用

rI."REFCL||'_TEST'"

但我敢打赌,如果你这样做,以后必须支持你的代码的人都会讨厌你。

不使用列别名编写代码是个糟糕的主意。您确实希望为列名添加别名

如果您真的,真的决心避免出于某种原因使用别名,您可以使用

rI."REFCL||'_TEST'"

但我敢打赌,如果你这样做,以后必须支持你的代码的人都会恨你。

请注意,列名不是动态的。它有一个固定的名字。这个名字相当深奥……给这个表达式一个别名,你就不会有这个问题了?我可能遗漏了一些东西,但我不确定是什么。请注意,列名不是动态的。它有一个固定的名字。这个名字相当深奥……给这个表达式一个别名,你就不会有这个问题了?我可能错过了一些东西,但我不确定是什么。