我需要将文件读取到oracle中的变量。
我已经创建了具有读写权限的目录对象。 Oracle在Windows上运行。
CREATE DIRECTORY AUTHC AS 'C:\Users\oracle\Documents\authscript';
GRANT READ ON DIRECTORY AUTHC TO PUBLIC;
GRANT WRITE ON DIRECTORY AUTHC TO PUBLIC;
DECLARE
vInHandle utl_file.file_type;
vNewLine VARCHAR2(250);
BEGIN
vInHandle := utl_file.fopen('AUTHC', 'common.auth.script', 'R');
utl_file.fclose(vInHandle);
END fopen;
但是,出现异常提示“无效的文件操作” *原因:试图从一个文件或目录中读取 不存在,或者文件或目录访问被拒绝 操作系统。
我不是oracle用户。有什么办法可以找到oracle用户并检查权限
答案 0 :(得分:0)
要找到oracle用户,请打开任务管理器并检查进程“ oracle.exe”的“用户名”。
答案 1 :(得分:0)
如果提到的文件已经存在,并且您想摆脱非Oracle用户的身份,那么请从sys
用户和grant read, write
到your user
创建目录。
--login as sys user(owner of Oracle) as sysdba
CREATE DIRECTORY AUTHC AS 'C:\Users\oracle\Documents\authscript';
GRANT READ ON DIRECTORY AUTHC TO your_user; -- replace your_user with user name of the user you are using
GRANT WRITE ON DIRECTORY AUTHC TO your_user; -- replace your_user with user name of the user you are using
-- note: grant to the directory should be given to the user and not the role
--Login with your_user
DECLARE
vInHandle utl_file.file_type;
vNewLine VARCHAR2(250);
BEGIN
vInHandle := utl_file.fopen('AUTHC', 'common.auth.script', 'R');
utl_file.fclose(vInHandle);
END fopen;
干杯!