今天写存储过程,用到了动态sql。
其中我是这样用的:
EXECUTE IMMEDIATE 'truncate table en_pt_kw_aeffect_sumt0_mapping WHERE Status = ''DAY''' ;
调试的时候报错了。
错误:
ora-03291:Invalid truncate option-missing STORAGE keyword
ora-06512:at "ETL.PKG_TC_POWERTRACE",line 72
ora-06512:at line 3
原因:
ddl操作不能加where
要删除表的一部分数据,得用delete
要删除表的一个分区的数 据,可以用truncate
alter table 表名
truncate partition 分区名;
解决办法:
那句换成:DELETE FROM en_pt_kw_aeffect_sumt0_mapping WHERE Status = 'DAY' ;
补充说明:
sql语句分两种:ddl和dml。
在代码里,ddl需要 用动态sql;dml不需要动态的。
ddl就那几种:create drop truncate alter
dml也就几 种:insert update delete merge
再有个select
20091202补充:dml语句也能用 execute immediate
ddl操作
最新推荐文章于 2023-11-15 22:04:54 发布