在oracle中,如何将系统时间附加到文件名?
我对oracle非常陌生。我需要从oracle创建一个带有系统时间戳的文件。请告诉我怎么做 此外,我需要将pl/sql代码引发的任何异常或错误写入一个文件,并在出现错误后退出。我该怎么做 谢谢,在oracle中,如何将系统时间附加到文件名?,oracle,Oracle,我对oracle非常陌生。我需要从oracle创建一个带有系统时间戳的文件。请告诉我怎么做 此外,我需要将pl/sql代码引发的任何异常或错误写入一个文件,并在出现错误后退出。我该怎么做 谢谢, Priya.R这是在SQL Plus中获取动态文件名的方法 SET TERMOUT OFF DEFINE dynamic_filename = idle COLUMN which_dynamic NEW_VALUE dynamic_filename SELECT 'prefix_'
Priya.R这是在SQL Plus中获取动态文件名的方法
SET TERMOUT OFF
DEFINE dynamic_filename = idle
COLUMN which_dynamic NEW_VALUE dynamic_filename
SELECT 'prefix_'
||TO_CHAR( SYSDATE, 'YYYYMMDD' )
||'_'
||TO_CHAR( SYSDATE, 'HH24MISS' )
||'.log' which_dynamic
FROM dual;
SET TERMOUT ON
SPOOL &dynamic_filename
SELECT * FROM dual;
SPOOL OFF
该文件在SQL Plus的默认目录中创建(在windows上,这是快捷方式的“起始位置:”属性)
要将输出放在已知目录中,请将SPOOL命令修改为
SPOOL c:\output_dir\&dynamic_filename
若要在发生错误后获取要退出的SQL Plus脚本,请包含此命令
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK
这就是如何在SQL Plus中获取动态文件名的方法
SET TERMOUT OFF
DEFINE dynamic_filename = idle
COLUMN which_dynamic NEW_VALUE dynamic_filename
SELECT 'prefix_'
||TO_CHAR( SYSDATE, 'YYYYMMDD' )
||'_'
||TO_CHAR( SYSDATE, 'HH24MISS' )
||'.log' which_dynamic
FROM dual;
SET TERMOUT ON
SPOOL &dynamic_filename
SELECT * FROM dual;
SPOOL OFF
该文件在SQL Plus的默认目录中创建(在windows上,这是快捷方式的“起始位置:”属性)
要将输出放在已知目录中,请将SPOOL命令修改为
SPOOL c:\output_dir\&dynamic_filename
若要在发生错误后获取要退出的SQL Plus脚本,请包含此命令
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK
当您试图使用PL/SQL创建文件时,似乎需要查看Oracle提供的包 您可以通过以下方式生成文件: (您需要首先创建一个Oracle目录,指向文件的操作系统位置:
CREATE OR REPLACE DIRECTORY DIR AS 'your OS directory';
请注意,下面的示例代码中使用了名称“DIR”。您还需要“创建目录”权限,然后将目录的读写权限授予将使用它的用户:
GRANT READ,WRITE ON DIR TO user1;
)
当您试图使用PL/SQL创建文件时,似乎需要查看Oracle提供的包 您可以通过以下方式生成文件: (您需要首先创建一个Oracle目录,指向文件的操作系统位置:
CREATE OR REPLACE DIRECTORY DIR AS 'your OS directory';
请注意,下面的示例代码中使用了名称“DIR”。您还需要“创建目录”权限,然后将目录的读写权限授予将使用它的用户:
GRANT READ,WRITE ON DIR TO user1;
)
OP确实声明这是从PL/SQL完成的。这是一个以SQL*Plus为中心的解决方案,在PL/SQL.To DCookie中不起作用-OP没有说明文件是从PL/SQL创建的,只是“从Oracle”。然后,他们说他们想“将pl/sql代码引发的任何异常或错误写入文件并退出”,因此我假设pl/sql是由sql*Plus运行的,因此我的答案构造得很恰当。@Paul,重点是-问题并不完全清楚。然而,我认为“来自Oracle”与“来自SQLPlus”不是一回事(SQLPlus从未被提及),尽管有些人看不出两者之间的区别,比如OP.OP确实声明这是从PL/SQL完成的。这是一个以SQL*Plus为中心的解决方案,在PL/SQL.To DCookie中不起作用-OP没有说明文件是从PL/SQL创建的,只是“从Oracle”。然后,他们说他们想“将pl/sql代码引发的任何异常或错误写入文件并退出”,因此我假设pl/sql是由sql*Plus运行的,因此我的答案构造得很恰当。@Paul,重点是-问题并不完全清楚。然而,我认为“来自Oracle”与“来自SQLPlus”不是一回事(SQLPlus从未被提及),尽管有些人看不到区别,就像OP一样。