【问题标题】:How to make column name dynamic with spool on ORACLE?如何在 ORACLE 上使用假脱机使列名动态化?
【发布时间】:2016-04-11 14:39:55
【问题描述】:

我想问,是否可以使用游标来循环字符串值?例如,我的“.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

现在,列名仍然是通用的或硬编码的。然后,我想返回字符串值以将“DATE”、“SUBJECT”和“CLASS”替换为动态的。因此,只需遵循加载到数据库的数据即可。

例如: 我的表格中填满了这些数据:

TITLE_COLUMN1               TITLE_COLUMN2                 TITLE_COLUMN3
DATE                        SUBJECT                       CLASS

我想从 TITLE_COLUMN1、TITLE_COLUMN2、TITLE_COLUMN3 中选择值作为我的列名。那么更好的方法是什么?使用

光标

或使用

变量

?

感谢您的建议和帮助。

【问题讨论】:

  • 您到底想完成什么?如果您不关心 COLUMN 设置,您可以编写一个 PL/SQL 块来构建动态查询、打开游标,然后使用 print 命令打印游标结果。但是您将无法使用 COLUMN 格式化命令。如果您的目标只是生成一个输出文件,我倾向于使用utl_file 可能基于 Tom Kyte 的 SQLUnloader,而不是尝试跳过 SQLPlus 中所需的所有环节(如果您愿意)做一堆格式化。

标签: oracle plsql spool


【解决方案1】:

如果您正在使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多