动态SQL的Oracle PL / SQL异常

时间:2014-05-20 06:38:15

标签: exception-handling plsql

我的代码有问题(下图),假设路径'E:\ Oracle \ test'不存在(心理文件夹不存在),所以它应该转到错误异常处理程序并且写一个错误日志,但它没有。相反,它成功创建了Oracle Directory,为什么会这样?我的代码在哪里出错?

有人可以帮助我,非常感谢 数据库是Oracle 11g

DECLARE
var1 VARCHAR2(2000) := 'somepath';
var2 VARCHAR2(2000) := 'directoryname';
err  VARCHAR2(2000);

BEGIN
file_path_ := 'E:\Oracle\test\' || var1 || '\';
temp_dir_ := 'TEST_DIR_' || var2;
plsql_block_ := 'CREATE OR REPLACE DIRECTORY ' || temp_dir_ || ' AS ' || '''' ||file_path_ || '''';
EXECUTE IMMEDIATE plsql_block_;

SAVEPOINT Start_Trans;

<some code here>

EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO Start_Trans;
err := substr(SQLERRM,1,2000);
Write_Log('ERROR', var1, err_);

END;

1 个答案:

答案 0 :(得分:1)

Oracle数据库中创建的目录只是磁盘上真实内容的别名。 Oracle没有验证您指定的目录是否确实存在。