在 pl SQL 中执行创建目录命令时立即执行错误


execute immediate 'CREATE or replace DIRECTORY user_dir AS' ||'"C:proc"';

执行上面的代码时,它会抛出以下错误:

第 1 行错误:

ORA-01780:需要字符串文本

ORA-06512:在"数据库名称。写入数据",第 7 行

ORA-06512:在第 1 行

使用这个:

declare
a varchar2(100);
begin
a:= q'[CREATE OR REPLACE DIRECTORY g_vid_lib AS '/video/library/g_rated']';
execute immediate a;
end;

这将在安装了 oracle 的服务器上创建目录,而不是在您的机器驱动器上。

SQL> select * from dba_directories where lower(directory_name) = 'g_vid_lib';
OWNER                DIRECTORY_NAME          DIRECTORY_PATH
------------------------------ ------------------------------      
SYS                  G_VID_LIB              /video/library/g_rated

在您的情况下,它是这样的:

declare
a varchar2(100);
begin
a:= q'[CREATE OR REPLACE DIRECTORY g_vid_lib AS 'C:procedure']';
execute immediate a;
end;
BEGIN
  EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY user_dir AS ''C:proc''';
END;

应该做这个伎俩。"立即执行"需要位于开始/结束块内,并注意作为转义字符所需的单引号。

最新更新