带有For循环的PL/SQL过程
我对PL/SQL相当陌生,正在尝试理解如何为这个问题编写代码 我需要创建130个相同的表,在130个不同的模式中使用130个不同的表空间。我可以很容易地运行代码,然后对下一个模式进行全局搜索/替换,运行代码,然后重复 我要做的是用带有For循环的PL/SQL过程,sql,oracle,plsql,Sql,Oracle,Plsql,我对PL/SQL相当陌生,正在尝试理解如何为这个问题编写代码 我需要创建130个相同的表,在130个不同的模式中使用130个不同的表空间。我可以很容易地运行代码,然后对下一个模式进行全局搜索/替换,运行代码,然后重复 我要做的是用 declare n number(3); Begin for n in 1..130 Loop (run my statements) End Loop; End; / 目前我使用的语句是直接SQL: CREATE TABLE xy
declare n number(3);
Begin
for n in 1..130
Loop
(run my statements)
End Loop;
End;
/
目前我使用的语句是直接SQL:
CREATE TABLE xyz_101.... Tablespace xyz_101
我想我应该创建变量来保存所有的create Table、Alter Table、create Index、create Synonym语法,然后立即执行这些变量。我不完全确定如何执行此操作,因为每次执行都需要传递“n”
有更好的办法吗?我是否应该将“createtable”、createindex、“createsynonym”语句编写为游标,然后执行游标
我相信其他人已经解决了这个问题,并感谢任何指导或见解。
谢谢!使用“立即执行”
for n in 1 .. 130 loop
execute immediate 'create table t'||n||' ( dummy char(1) )';
end loop;
是否使用n执行立即“创建表xyz:1(…)”
是否为您执行此技巧?如果不是,可能执行立即“创建表xyz”| | to_char(n)| |”(…)“
可以吗?第二个。据我所知,您不能在DDL语句中使用绑定变量。听起来可能是过时的设计。虚拟专用数据库功能和分区的组合可能更易于维护。但是分区需要许可证。@HellmarBecker-工作得很好。谢谢!