【发布时间】:2014-08-20 20:31:34
【问题描述】:
我在尝试将替换变量用于表名时遇到了一个小问题。当我使用QTR_END 日期为31-DEC-2009 运行以下代码时,我收到一个错误,因为它尝试创建一个名称为:
"ZZ_PLANNING_DATA_TO_NUMBER(TO_CHAR(TO_DATE('&&QTR_END','DD-MM-YYYY'), 'Q'))QTO_NUMBER(EXTRACT (YEAR FROM TO_DATE('&&QTR_END','DD-MM-YYYY')))"
当然我正在尝试创建一个表"ZZ_PLANNING_DATA_4Q2009"
我不知道如何强制替换变量替换它们的执行值,而不仅仅是替换代码。 ?
ACCEPT QTR_END DATE PROMPT 'Enter the last day of the period you wish to run (i.e.: 30-JUN-2014).';
DEFINE QUARTER = TO_NUMBER(TO_CHAR(TO_DATE('&&QTR_END','DD-MM-YYYY'), 'Q'));
DEFINE ACCYEAR = TO_NUMBER(EXTRACT (YEAR FROM TO_DATE('&&QTR_END','DD-MM-YYYY')));
DEFINE BACKUP_TABLE_NAME = "ZZ_PLANNING_DATA_&&QUARTER.Q&&ACCYEAR";
CREATE TABLE &&BACKUP_TABLE_NAME COMPRESS NOLOGGING
AS SELECT * FROM ZZ_PLANNING_DATA;
【问题讨论】:
标签: sql oracle variables plsql substitution