暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在DEFINE语句中使用函数的输出

askTom 2018-03-15
312

问题描述

在尝试使用函数的输出创建变量时,所需的值不会存储在变量中。我了解define语句存储字符值,因此请您建议是否可以实现。

例如: 定义VARNAME = TO_CHAR(SYSDATE,'YYYYMMDD');
我们需要VARNAME应该有价值作为20180315

这将用于引用存储为TBL_20180318的表
例如:
从TBL _ & VARNAME中选择 *。


专家解答

您定义的值取 “按现状”:

SQL> DEFINE VARNAME=TO_CHAR(SYSDATE,'YYYYMMDD');
SQL> DEFINE VARNAME
DEFINE VARNAME         = "TO_CHAR(SYSDATE,'YYYYMMDD')" (CHAR)


这不会执行函数。所以当你运行:

SQL> select * from TBL_&VARNAME;


这变成:

select * from TBL_TO_CHAR(SYSDATE,'YYYYMMDD')


要执行该函数,您需要将其选择到替换变量中。你可以通过定义一个列的new_value,像这样:

SQL> col dt new_value today

SQL> select to_char(sysdate, 'YYYYMMDD') dt from dual;
DT
20180315

SQL> define today
DEFINE TODAY           = "20180315" (CHAR)


现在它存储20180315的值,所以你可以用它来替换你的表名:

SQL> create table t_20180315 ( x int );

Table T_20180315 created.

SQL> select count(*) from "T_&TODAY";
old:select count(*) from "T_&TODAY"
new:select count(*) from "T_20180315"
  COUNT(*)
         0

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论