Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有For循环的PL/SQL过程_Sql_Oracle_Plsql - Fatal编程技术网

带有For循环的PL/SQL过程

带有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

我对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”

有更好的办法吗?我是否应该将“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-工作得很好。谢谢!