11g 上的 Ora-29283 错误
Ora-29283 error on 11g
是否可以从 Oracle 数据库访问我 PC 上的文件夹?换句话说,我的本地机器上没有安装数据库,我在我的 PC 'C:\LOB' 上创建了一个文件夹,我想在其中保存从数据库检索到的图像,但它返回一个
ORA-29283 error: invalid file operation.
我确定该目录已创建,因为我可以在我的数据库的目录文件夹中看到它。那么可能是什么问题呢?是因为文件夹是在我的电脑上创建的,而数据库在其他地方吗?
以下是我的程序:
CREATE OR REPLACE PROCEDURE BLOB_UPDATE (file_name in varchar) IS
file_ref UTL_FILE.file_type;
raw_max_size constant number := 32767;
begin
file_ref := UTL_FILE.fopen('MY_DIR', file_name, 'WB', raw_max_size);
-- Here it stops working ! --
....
utl_file.fclose(file_ref);
END BLOB_UPDATE;
PL/SQL 在数据库系统中是 运行,即在服务器上。它只能访问服务器上的文件。它不能是你电脑上的文件。
即使您已经在 Oracle (CREATE DIRECTORY ...
) 中定义目录并授予您的用户足够的访问权限,它也会失败,因为 Oracle 将尝试访问服务器上的 C:\LOB
,而不是你的电脑。
您要实现的目标无法在服务器端解决,即无法在 PL/SQL 中解决。您必须在客户端(即在您的 PC 上)编写 运行s 的代码,例如一些 Java 或 .NET 程序。
是否可以从 Oracle 数据库访问我 PC 上的文件夹?换句话说,我的本地机器上没有安装数据库,我在我的 PC 'C:\LOB' 上创建了一个文件夹,我想在其中保存从数据库检索到的图像,但它返回一个
ORA-29283 error: invalid file operation.
我确定该目录已创建,因为我可以在我的数据库的目录文件夹中看到它。那么可能是什么问题呢?是因为文件夹是在我的电脑上创建的,而数据库在其他地方吗? 以下是我的程序:
CREATE OR REPLACE PROCEDURE BLOB_UPDATE (file_name in varchar) IS
file_ref UTL_FILE.file_type;
raw_max_size constant number := 32767;
begin
file_ref := UTL_FILE.fopen('MY_DIR', file_name, 'WB', raw_max_size);
-- Here it stops working ! --
....
utl_file.fclose(file_ref);
END BLOB_UPDATE;
PL/SQL 在数据库系统中是 运行,即在服务器上。它只能访问服务器上的文件。它不能是你电脑上的文件。
即使您已经在 Oracle (CREATE DIRECTORY ...
) 中定义目录并授予您的用户足够的访问权限,它也会失败,因为 Oracle 将尝试访问服务器上的 C:\LOB
,而不是你的电脑。
您要实现的目标无法在服务器端解决,即无法在 PL/SQL 中解决。您必须在客户端(即在您的 PC 上)编写 运行s 的代码,例如一些 Java 或 .NET 程序。