0

我是 perl 的新手,并试图列出昨天创建的所有 oracle 模式表,即 (sysdate - 1)

试图通过 perl 脚本实现上述目标并针对 oracle 数据库运行。

Q: 1. 使用 perl 脚本列出所有最近创建的 oracle 表 2. 结果中的列 (Schema, table_name, created datetime) 3. 仅在创建任何新表时才提供输出,否则没有通过调度程序发送电子邮件

例如

select schema, table_name, created
from dba_objects
where created = sysdate - 1
and object_type = 'TABLE';
4

1 回答 1

0

根据date定义,Oracle 中的 A 包括一天部分和到秒的时间。即使您的会话NLS_DATE_FORMAT仅指定您要显示日期组件,时间仍然存在。时间几乎肯定会导致您的查询不返回任何行。sysdate - 1正好在 24 小时前返回。因此,如果今天是 2013 年 1 月 14 日 13:41:35,则sysdate - 1返回 2013 年 1 月 13 日 13:41:35。您的查询将仅返回在那一秒创建的表。

trunc(sysdate)今天午夜trunc(sysdate - 1)返回,昨天午夜返回。所以,很可能,你想要类似的东西

SELECT owner, object_name
  FROM dba_objects
 WHERE created >= trunc(sysdate - 1)
   AND created < trunc(sysdate)
   AND object_type = 'TABLE'

由于dba_objects没有列schemaor table_name,我假设您的意思是ownerand object_name

于 2013-01-14T18:45:52.790 回答