我是perl的新手并试图列出昨天创建的所有oracle架构表,即(sysdate - 1)
尝试通过perl脚本实现上述目标,并针对oracle数据库运行。
问: 1.使用perl脚本列出所有最近创建的oracle表 2.结果中的列(Schema,table_name,created datetime) 3.仅在创建任何新表时提供输出,而不通过调度程序发送电子邮件
e.g。
select schema, table_name, created
from dba_objects
where created = sysdate - 1
and object_type = 'TABLE';
答案 0 :(得分:0)
根据定义,Oracle中的date
包括日期组件和秒级时间。即使您的会话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
没有列schema
或table_name
,我假设您的意思是owner
和object_name
。