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

Plsql 在pl sql中执行创建目录命令时执行立即错误,plsql,Plsql,执行上述代码时,会抛出以下错误: 第1行错误: ORA-01780:需要字符串文字 ORA-06512:databasename.WRITEDATA第7行 ORA-06512:在第1行 使用以下命令: execute immediate 'CREATE or replace DIRECTORY user_dir AS' ||'"C:\proc"'; 这将在安装oracle的服务器上创建目录,而不是在您的计算机驱动器上 declare a varchar2(100); b

执行上述代码时,会抛出以下错误:

第1行错误:

ORA-01780:需要字符串文字

ORA-06512:databasename.WRITEDATA第7行

ORA-06512:在第1行

使用以下命令:

execute immediate 'CREATE or replace DIRECTORY user_dir AS' ||'"C:\proc"';
这将在安装oracle的服务器上创建目录,而不是在您的计算机驱动器上

declare

a varchar2(100);

begin

a:= q'[CREATE OR REPLACE DIRECTORY g_vid_lib AS '/video/library/g_rated']';
execute immediate a;

end;
在你的情况下,它是这样的:

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;