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: 缺少关键字
各位同人多多指教啊

解决方案 »

  1.   

    SHENHUA.IMAGES 
    改为
    IMAGES 
    试试
      

  2.   

    楼主 回 wiler(@_@):
    我试过了,不过IMAGES对象在方案SYS下,而不在SHENHUA下。我需要在SHENHUA下创建DIRECTORY
      

  3.   

    哪位同人能告诉我如何在Oracle Enterprise Manager Console中创建directory也可以啊
      

  4.   

    关注。oracle是否允许建立在非sys用户下?
      

  5.   

    楼主 回 tgm78(shop34161266.taobao.com) :
    难道不能在非SYS方案下创建directory对象吗?
      

  6.   

    以SHENHUA用户登陆,然后
    CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\Inetpub\wwwroot';
    看提示是什么?
      

  7.   

    楼主 回 wiler(@_@):
    提示是:目录已创建
    但是IMAGES被创建在SYS方案下,而我想把IMAGES创建在SHENHUA方案下
      

  8.   

    创建Directory不可以指定方案
    所有的Directory都被创建在同一个命名空间内
    Directory的访问控制通过 Grant 来实现 -- 这是你要这样做的原因吧
      

  9.   

    楼主 回 lauweiaaa(听我的,没错):如果我在SHENHUA方案下的一个存储过程需要使用DIRECTORY,具体该如何实现!也就是说如何通过 Grant 来实现对Directory的访问?能给个简单的示例吗?感谢大家的帮助
      

  10.   

    楼主 回 各位朋友:我想实现的功能是通过过程将.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,而采用别的方法?请指教
      

  11.   

    你可以认为Directory是全局的
    所有方案中创建的过程都能使用这个DIRECTORY
      

  12.   

    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 过程已成功完成。