PL / SQL Developer 8.0 LOOP IF ELSE THEN SQL Window

时间:2014-10-23 13:51:29

标签: sql loops plsql

我在PL / SQL Developer的 SQL Window 下创建了 .sql 文件。这是非常loooooog,但基本上做了以下:

TRUNCATE TABLE table_1
REUSE STORAGE;
COMMIT;

INSERT INTO table_1
Select * from table2
Where ...;
COMMIT;

然而,在运行此脚本之前,我们需要确保所有源都可以轻松加载。所以我想在此脚本之前添加如下逻辑来执行检查:

Do check the timestamp field of table1 and table2
If table1.timestamp is NOT today
   If table2.timestamp is today then execute the script listed above
   Else do nothing
   End If
Else do nothing
End If
(Maybe wait for 60 minutes)
Loop

我可以在VBA中找出LOOP,但我更希望能够将其添加到现有的 .sql 文件中,或其他不需要我的方法要改变现有的SQL语言。 我不允许在PL / SQL Developer中使用任何程序窗口,不幸的是,因为我在财务部门工作。

有没有人知道是否有办法解决这样的情况?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以编写匿名PL / SQL块(有关详细信息,请参阅oracle文档)。例如,它看起来像:

declare -- keyword
  /* Here you can declare some variables */
begin -- keyword (starts script)
  /* some statements to do */

exception -- keyword to catch exceptions, if you want to do that
  /* statements to process errors */
end; -- keyword (end of script)
/ /* you need this symbol to show oracle that script body is ended 
     and after this symbol you can write another script, that will 
     be executed automatically after the first one */

如果您不想声明任何变量并捕获错误,可以省略DECLARE和EXCEPTION部分。