我的代码有问题(下图),假设路径'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;
答案 0 :(得分:1)
Oracle数据库中创建的目录只是磁盘上真实内容的别名。 Oracle没有验证您指定的目录是否确实存在。