如何在 ORACLE 上使用 spool 使列名动态化?

How to make column name dynamic with spool on ORACLE?

请问,是否可以使用游标来循环字符串值?例如,我的“.txt”报告有 3 个标题列:

COLUMN "DATE" format a15
COLUMN "SUBJECT" format a8
COLUMN "CLASS" format a10

结果如下:

DATE                       SUBJECT                CLASS
----------------------     ------------------     -----------------
08-Apr-2016                 Science                10  
08-Apr-2016                 Social                 11

现在,列名仍然是通用的或硬编码的。然后,我想用 return 字符串值来替换 "DATE"、"SUBJECT" 和 "CLASS" 来动态。所以只需关注加载到数据库的数据。

例如: 我有 table 填满了这些数据:

TITLE_COLUMN1               TITLE_COLUMN2                 TITLE_COLUMN3
DATE                        SUBJECT                       CLASS

我想 select 来自 TITLE_COLUMN1、TITLE_COLUMN2、TITLE_COLUMN3 的值出现在我的列名称中。那么更好的方法是什么?使用

Cursor

或使用

Variable

?

感谢您的建议和帮助。

如果您正在使用 SQLPlus 并且您正在谈论 substitution variables,您可以这样做:

column title_column1 new_value vc1
column title_column2 new_value vc2
column title_column3 new_value vc3
select title_column1,title_column2,title_column3 from test_columns;
select &vc1,&vc2,&vc3 from test_data;