【问题标题】:Notification after script has finished in SQL DeveloperSQL Developer 中脚本完成后的通知
【发布时间】:2019-03-03 10:33:25
【问题描述】:

我对在脚本完成执行后会通知我的任何方法感兴趣。它正在从一个数据库到另一个数据库进行完全加载,每次执行时,它都会加载一个月的数据。完成后,我需要在更新控制表后重新启动它以加载下个月。由于不同的数据量和不同的可用 Oracle 资源,执行时间会有很大差异,因此简单地设置一个计时器会导致不必要的检查或丢失潜在的加载时间。

BEGIN
  PKG_PACKAGENAME.PROCEDURENAME;  
END;

这些是我的想法,但我不知道在没有显着外部依赖的情况下实际上可以实现什么。目前将首选最简单的方法。如果可以在安全的公司环境中运行,任何类似的东西也可能是可以的。我宁愿不必修改包或过程的内容。

  • 发出声音通知
  • 将 SQL Developer 窗口置于最前面
  • 执行启动 IFTTT 应用以发送推送通知的 http 请求
  • 运行执行 http 请求的 python 脚本

【问题讨论】:

  • @LukaszSzozda 我确实计划使用 DBMS 调度程序来进行增量加载,但我打算手动执行此初始加载,因为我无论如何都需要在每个月加载后进行质量检查。我还没有使用 DBMS 调度器的经验,那么有没有其他更简单的解决方案,虽然可能不那么专业?

标签: oracle oracle-sqldeveloper windows-7-x64


【解决方案1】:

将 SQL Developer 窗口置于最前面

真的又快又脏;在调用您的过程的匿名块之后添加accept 到您的脚本:

BEGIN
  PKG_PACKAGENAME.PROCEDURENAME;  
END;
/

accept dummy prompt "Script has finished, just press enter"

并作为脚本运行 (F5)。当块完成替换变量提示时

窃取焦点;当您单击 OK 或按 Enter 键(或取消 - 无论您做什么)时,SQL Developer 主窗口都会出现在最前面。

【讨论】:

  • 非常感谢,但这对我不起作用。BEGIN null ; END; accept dummy prompt "Script has finished, just press enter"。我收到一个错误ORA-06550: line 5, column 1: PLS-00103: Encountered the symbol "ACCEPT" 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action:
  • 在客户端accept 命令之前,您需要一个斜线来终止该块。
  • 作为脚本运行。版本信息如下。 12.2.0.14.48 似乎是与您的 18.4 进行比较的 IDE 版本。我无法在我的工作计算机上更新它。抱歉,我之前没有包含此信息。 About ----- Oracle SQL Developer 4.0.1.14 Version 4.0.1.14 Build MAIN-14.48 IDE Version: 12.1.3.2.41.140207.1351 Product ID: oracle.sqldeveloper Product Version: 12.2.0.14.48 Version ------- Component Version ========= ======= Oracle IDE 4.0.1.14.48 Java(TM) Platform 1.8.0_161
  • 顺便问一下,我怎样才能更好地格式化这些 SO cmets 并在多行上?
  • @Bobby - 我认为这应该适用于大多数版本。您不能真正格式化 cmets,它们不适合提供那么多信息(如有必要,您可以编辑问题,但我认为您只需要添加斜线 - 我已经编辑了我的答案以显示这一点)。
【解决方案2】:

发出声音通知

chr(7) will produce a beep in SQL*Plus, at least on Windows:Use it after your procedure run

SQL> select chr(7) from dual;

【讨论】:

  • 谢谢,我会记住这一点,但我没有使用 SQLPlus 来完成这个特定的任务。
【解决方案3】:

如果您在 Windows 上运行 SQL Developer,请使用 Powershell 实例化一个可以说话的 COM 对象:

begin
   dbms_lock.sleep(3);
end;
/

host powershell -c $sapi = new-object -comObject sapi.spVoice ; $sapi.speak('The script has finished')

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2018-09-08
    相关资源
    最近更新 更多