Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在oracle中,如何将系统时间附加到文件名?_Oracle - Fatal编程技术网

在oracle中,如何将系统时间附加到文件名?

在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_'

我对oracle非常陌生。我需要从oracle创建一个带有系统时间戳的文件。请告诉我怎么做

此外,我需要将pl/sql代码引发的任何异常或错误写入一个文件,并在出现错误后退出。我该怎么做

谢谢,
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一样。