oracle-sqldeveloper中许多SQL文件的有序使用

6yoyoihd  于 2023-04-29  发布在  Oracle
关注(0)|答案(1)|浏览(109)

我有很多SQL文件,我不得不一次又一次地使用--共同点是按照定义的顺序:

  • 用a检查某物SQL
  • 用B更新某物SQL
  • 用C检查另一个东西。SQL
  • ....

我正在寻找一个扩展或第三方或解决方案来处理这个有条不紊和舒适的sqldeveloper。我的知识是有限的,所以我不能创建DLL或包或Java解决方案。- 我需要一个“简单而愚蠢”的解决方案.
对此有什么想法/解决方案吗?(也许是一个扩展和结构化的菜单?但这看起来没那么简单。.)

esbemjvw

esbemjvw1#

你所描述的看起来像是一个很好的候选,其中包含了许多当前包含在其中的函数/过程。SQL文件。
您可以将每个文件中的代码放入其自己的过程中,并创建一个“主”过程,该过程将按一定的顺序调用它们。就像这样:
软件包规范包含所有功能/程序的列表:

create or replace package pkg_test as
  procedure main;
  function a return boolean;
  procedure b;
  procedure c;
end pkg_test;
/

包体包含以下函数/过程:

create or replace package body pkg_test as
  procedure main is
  begin
    if a then  -- if someone was hired today execute procedure B
       b;
    else
       c;      -- else, execute procedure C
    end if;
  end main;

  function a return boolean
  is
    l_cnt number;
  begin
    -- are there any employees hired today?
    select count(*)
      into l_cnt
      from emp
      where hiredate = trunc(sysdate);

    return l_cnt > 0;  -- return TRUE if someone was hired today
  end a;

  procedure b is
  begin
    insert into log_emp (datum, flag) values (trunc(sysdate), 'Y');
  end b;

  procedure c is
  begin
    update log_emp set 
      flag = 'N'
      where datum = trunc(sysdate) - 1;
  end c;
end pkg_test;
/

最后,你只需要打个电话

begin
  pkg_test.main;
end;
/

让它发挥作用当然,您可以/应该改进我为说明目的编写的简单代码--添加日志记录、异常处理等等。更好的是,您甚至可以计划该过程在所需的时间自动运行(例如,在凌晨2点),您只需查看早上正在做的事情。
从我的Angular 来看,这是一个更好的选择比运行的数量。SQL文件。

相关问题