从PL / SQL包执行立即运行

时间:2012-01-31 19:21:47

标签: 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;

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

注意:我要改变的表是Oracle External table.

2 个答案:

答案 0 :(得分:5)

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

l_sql := 'alter table LOG_FILES location ('''|| filename || to_char(sysdate,'DDMMYY') ||''')';

答案 1 :(得分:4)

在陈述结尾处有一个额外的括号

相关问题