CREATE OR REPLACE DIRECTORY出错

F15Eagle 2007-03-12 04:02:44
PLUS中运行CREATE OR REPLACE DIRECTORY SHENHUA.IMAGES AS 'C:\Inetpub\wwwroot';


出现如下提示:

CREATE OR REPLACE DIRECTORY SHENHUA.IMAGES AS 'C:\Inetpub\wwwroot'
*
ERROR 位于第 1 行:
ORA-00905: 缺少关键字


各位同人多多指教啊
...全文
899 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
F15Eagle 2007-03-14
  • 打赏
  • 举报
回复
楼主 回 各位朋友:

我想实现的功能是通过过程将.gif文件存储到ORACLE表中,参考CSDN中某帖中给出的解决办法,写了如下命令:

--创建表AAA
CREATE OR REPLACE TABLE SHENHUA.AAA (
T_ID VARCHAR2 (5) NOT NULL,
T_IMAGE BLOB NOT NULL
);

--创建存储过程AAAA
CREATE OR REPLACE PROCEDURE SHENHUA.AAAA (
TID VARCHAR2,
FILENAME VARCHAR2) AS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
INSERT INTO AAA (T_ID, T_IMAGE) VALUES (TID,
EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
F_LOB:= BFILENAME ('AAAAA', FILENAME);******
DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,
DBMS_LOB.GETLENGTH (F_LOB));
DBMS_LOB.FILECLOSE (F_LOB);
COMMIT;
END;

标有******的那一行中,AAAAA是一个DIRECTORY,但通过以下命令

CREATE OR REPLACE DIRECTORY AAAAA AS 'C:\Inetpub\wwwroot';

会将AAAAA创建在SYS方案下,这样我在SHENHUA方案中创建的过程AAAA就不能使用这个DIRECTORY了。
如果能使用别的方法代替标有******的那一行就好了,也就是说我在过程AAAA中能不能不用DIRECTORY,而采用别的方法?请指教
F15Eagle 2007-03-14
  • 打赏
  • 举报
回复
楼主 回 lauweiaaa(听我的,没错):

如果我在SHENHUA方案下的一个存储过程需要使用DIRECTORY,具体该如何实现!也就是说如何通过 Grant 来实现对Directory的访问?能给个简单的示例吗?

感谢大家的帮助
lauweiaaa 2007-03-14
  • 打赏
  • 举报
回复
创建Directory不可以指定方案
所有的Directory都被创建在同一个命名空间内
Directory的访问控制通过 Grant 来实现 -- 这是你要这样做的原因吧
F15Eagle 2007-03-14
  • 打赏
  • 举报
回复
楼主 回 wiler(@_@):
提示是:目录已创建
但是IMAGES被创建在SYS方案下,而我想把IMAGES创建在SHENHUA方案下
lauweiaaa 2007-03-14
  • 打赏
  • 举报
回复
SQL> show user
USER 为 "TEST"
SQL> CREATE TABLE test.AAA (
2 T_ID VARCHAR2 (5) NOT NULL,
3 T_IMAGE BLOB NOT NULL
4 );

表已创建。
SQL> create or replace directory images as 'D:/WORKS/DEMO/AA/IMAGES';

目录已创建。

SQL> CREATE OR REPLACE PROCEDURE test.testp (
2 TID VARCHAR2,
3 FILENAME VARCHAR2) AS
4 F_LOB BFILE;
5 B_LOB BLOB;
6 BEGIN
7 INSERT INTO AAA (T_ID, T_IMAGE) VALUES (TID, EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
8 F_LOB:= BFILENAME ('IMAGES', FILENAME);
9 DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);
10 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB, DBMS_LOB.GETLENGTH (F_LOB));
11 DBMS_LOB.FILECLOSE (F_LOB);
12 COMMIT;
13 END;
14 /

过程已创建。

SQL>
SQL> execute testp('F1001','AALOGO.GIF');

PL/SQL 过程已成功完成。
lauweiaaa 2007-03-14
  • 打赏
  • 举报
回复
你可以认为Directory是全局的
所有方案中创建的过程都能使用这个DIRECTORY
wiler 2007-03-12
  • 打赏
  • 举报
回复
以SHENHUA用户登陆,然后
CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\Inetpub\wwwroot';
看提示是什么?
F15Eagle 2007-03-12
  • 打赏
  • 举报
回复
自己小顶一把
F15Eagle 2007-03-12
  • 打赏
  • 举报
回复
楼主 回 tgm78(shop34161266.taobao.com) :
难道不能在非SYS方案下创建directory对象吗?
tgm78 2007-03-12
  • 打赏
  • 举报
回复
关注。

oracle是否允许建立在非sys用户下?
F15Eagle 2007-03-12
  • 打赏
  • 举报
回复
哪位同人能告诉我如何在Oracle Enterprise Manager Console中创建directory也可以啊
F15Eagle 2007-03-12
  • 打赏
  • 举报
回复
楼主 回 wiler(@_@):
我试过了,不过IMAGES对象在方案SYS下,而不在SHENHUA下。我需要在SHENHUA下创建DIRECTORY
wiler 2007-03-12
  • 打赏
  • 举报
回复
SHENHUA.IMAGES
改为
IMAGES
试试

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧