【问题标题】:How to use a PL/SQL procedure file with SQL*Plus如何在 SQL*Plus 中使用 PL/SQL 过程文件
【发布时间】:2018-03-29 09:19:33
【问题描述】:

我想执行一个 .sql 文件中的 PL/SQL 过程。

我正在使用 SQL*Plus 调用我的 .sql 文件,如下所示:

@myfile.sql

这里是 myfile.sql

declare 
    listTotal number := 0;
    nbrCommit number := 200;
begin
    select count(1) into listTotal from MKTMLF.TMP_ID_CLI_SUPPR;
    [... different updates here ....]
commit;
    if listTotal > nbrCommit THEN
        [... different updates here ....]
        commit;
    end if;
end;

当我将 PL/SQL 粘贴到 Oracle SQL 开发人员中时,它会告诉我“过程 PL/SQL 已完成”,但当我使用 SQL*Plus 执行此操作时,它只会显示一个数字

55

没有别的了!实际上我发现这些数字是我 file.sql 中的行数。

有什么问题?为什么在 Oracle SQL 开发人员内部和使用 SQL*Plus 都可以?

【问题讨论】:

  • 键入正斜杠“/”,您的程序将运行。您已将代码放入缓冲区,但您需要告诉它运行缓冲区中的内容 - 因此是“/”。
  • @BriteSponge 太感谢你了!!!那个“/”使它工作!

标签: oracle plsql oracle-sqldeveloper sqlplus


【解决方案1】:

请在文件末尾添加正斜杠/。这将要求客户端运行代码。

结尾的 / 是 sqlplus 和 sqlcl 寻找的东西,以知道它是块的结尾,请运行上面的代码块。

在 SQLDEV 中,有一个智能解析器可以从语法上确定块的结尾以知道要执行什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多