【发布时间】:2017-03-26 05:58:28
【问题描述】:
我创建了一大段脚本,它在我的目标表的最后插入新行。
脚本包含许多选择语句和临时表。
我想循环它以连续运行 2000 次,除了将 f5 推 2000 次之外没有其他选择。
是否有相当于将代码包装到 SAS 宏中并循环 2000 次的 Oracle SQL?
【问题讨论】:
-
Oracle 有一个
FOR循环,就像大多数编程语言一样。检查文档或here。 -
@EdGibbs - Oracle SQL 并不是您所说的“编程语言”。 SQL 中一般没有 FOR 循环,尤其是 Oracle 中。相反,Oracle 与其他数据库一样,具有紧密集成的过程语言 PL/SQL。您的文档链接指向 PL/SQL 中的 FOR 循环,而不是 Oracle SQL。
-
您搜索了什么?我刚刚在 Google 上搜索了“在 SAS 脚本中包装 Oracle SQL”,据我所知,有一些解决方案可供了解 SAS 的人使用。
-
如果你走 PL/SQL 路线,你可能会发现你的临时表可以被集合替换;尽管它们的存在有点令人不安——如果您将它们创建为脚本的一部分(我当然是在疯狂地推测),这通常是一个坏主意,并且如果您打算继续这样做,会迫使您使用动态 SQL。希望你不是。通过 SQL*Plus 循环和运行脚本的 shell 或批处理脚本可能更简单。或者,也许您可以重构为完成所有工作的单个插入,也许使用 CTE,但再次推测您现在正在做什么。
-
PL/SQL 在这里可能会有所帮助。但是,在脚本末尾有许多选择、临时表和插入语句,这听起来很奇怪。我并不是说从来没有必要这样做,但它非常罕见,而且听起来更像是一种批处理文件处理,而不是使用结构良好的数据库。可能值得告诉我们您的脚本正在做什么以获得一些建议。