在ORACLE的存储过程里写CREATE、DROP这样的语句应该怎么写????

jd29323 2001-10-28 09:34:58
我想在一个存储过程中使用:
create index lots_table_idx on lots_table(id);
rename lots_table to lots_table_123;
rename lots_table_tmp to lots_table;
drop index idx_some;
truncate table lots_table_123 reuse storage;
rename lots_table_123 to lots_table_tmp;
这几句SQL,但存储过程总是报错,
这样的存储过程我应该怎么写?
...全文
436 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingSunSha 2001-10-29
  • 打赏
  • 举报
回复
生成索引不需要LOCK表,如果要LOCK的话用
LOCK TABLE myTable IN EXCLUSIVE MODE;
jd29323 2001-10-29
  • 打赏
  • 举报
回复
其中一个表的数据量非常大,这个表是网站用户查询时,需要用到表
如果我要对这个表通过上面的方法建立索引
需要对这个表进行锁定吗?
KingSunSha 2001-10-28
  • 打赏
  • 举报
回复
老兄又是你啊!

oracle的存储过程中不能用create/drop这种ddl语句,因为当存储过程rollback的时候,ddl无法rollback。
所以必须写成:
execute immediate 'create index lots_table_idx on lots_table(id);'
这样的格式

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧