从PL/SQL包执行立即运行

zig*_*ggy 1 oracle plsql oracle10g

我在PL/SQL包中有以下代码行

l_sql := 'alter table LOG_FILES location ('||chr(39)|| filename || to_char(sysdate,'DDMMYY') ||chr(39)||'))';
execute immediate l_sql;
Run Code Online (Sandbox Code Playgroud)

pl/sql包编译得很好,但我没有看到变化.alter命令完全没有效果.这有什么理由吗?

注意:我尝试更改的Oracle External表.

APC*_*APC 5

文件名是一个字符串,需要在最后一个语句中用单引号括起来.为了实现你需要逃避单引号.一种方法是使用两个单引号.所以,你的任务需要看起来像这样:

l_sql := 'alter table LOG_FILES location ('''|| filename || to_char(sysdate,'DDMMYY') ||''')';
Run Code Online (Sandbox Code Playgroud)