For循环的PL / SQL过程

时间:2017-05-18 15:33:47

标签: 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 xyz_101.... Tablespace xyz_101

我在想我应该创建变量来保存所有Create Table,Alter Table,Create Index,Create Synonym语法,然后立即执行这些变量。我不完全确定如何做到这一点,因为我需要在每次执行时传递“n”。

有更好的方法吗?我应该编写“创建表”,“创建索引”,“创建同义词”语句作为游标,然后执行游标吗?

我确信其他人已经解决了这个问题,并感谢任何指导或见解。 谢谢!

1 个答案:

答案 0 :(得分:0)

使用EXECUTE IMMEDIATE。

 for n in 1 .. 130 loop
       execute immediate 'create table t'||n||' ( dummy char(1) )';
 end loop;