【问题标题】:How to execute an oracle stored procedure?如何执行oracle存储过程?
【发布时间】:2010-12-23 16:33:06
【问题描述】:

我使用的是oracle 10g express edition。它为数据库开发人员提供了一个不错的用户界面。但是我在执行存储过程时遇到了一些问题。

程序:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end

创建成功。但是当我执行时:

execute temp_proc;

它显示 ORA-00900: 无效的 SQL 语句

所以这里需要帮助

【问题讨论】:

  • 这对 SQLPlus 有效 - 你想如何运行它?
  • 首先我打开“转到数据库主页”,然后是主页>SQL>SQL 命令。然后创建过程,然后执行。
  • oracle 10g express edition 10.2....
  • 您使用的是什么 SQL IDE - PLSQL Developer?蟾蜍?
  • 我没有使用任何 ide。它是 oracle xe 中提供的内置 ui。但我找到了解决方案。开始 proc_name();结束

标签: oracle plsql oracle10g ora-00900


【解决方案1】:

Oracle SQL Developer (GUI) 中,使用 12c,也不要忘记启用 DMBS 输出 窗口(单击 View => Dbms Output,然后点击“+”符号,并选择您的连接),默认情况下不启用该窗口。

然后下面的语法将输出到这个窗口:

begin
  temp_proc
end;

【讨论】:

    【解决方案2】:

    我使用 oracle 12,它告诉我如果您需要调用该过程,请使用 call 关键字。 在您的情况下,它应该是:

    begin
      call temp_proc;
    end;
    

    【讨论】:

      【解决方案3】:

      'is' 和 'as' 都是有效的语法。默认情况下禁用输出。尝试一个也启用输出的过程...

      create or replace procedure temp_proc is
      begin
        DBMS_OUTPUT.ENABLE(1000000);
        DBMS_OUTPUT.PUT_LINE('Test');
      end;
      

      ...并在 PLSQL 块中调用它...

      begin
        temp_proc;
      end;
      

      ...因为 SQL 是非过程的。

      【讨论】:

        【解决方案4】:

        Execute 是 sql*plus 语法 .. 尝试将您的调用包装在 begin .. end 中,如下所示:

        begin 
            temp_proc;
        end;
        

        (尽管 Jeffrey 说这在 APEX 中不起作用 .. 但您正试图让它在 SQLDeveloper 中运行 .. 尝试那里的“运行”菜单。)

        【讨论】:

          【解决方案5】:

          Oracle 10g Express Edition 附带内置的 Oracle Application Express (Apex)。您在其 SQL 命令窗口中运行它,该窗口不支持 SQL*Plus 语法。

          没关系,因为(正如您所发现的)BEGIN...END 语法在 Apex 中确实有效。

          【讨论】:

            【解决方案6】:

            您是否尝试过像这样更正语法?:

            create or replace procedure temp_proc AS
            begin
              DBMS_OUTPUT.PUT_LINE('Test');
            end;
            

            【讨论】:

            • 我看到的是您刚刚将 IS 更改为 AS 并在 'end' 关键字的末尾添加了一个分号。虽然添加分号很好,但 OP 说编译成功,所以这不是问题。问题是 OP 不知道如何执行已在接受的答案中正确解决的 proc。所以这个答案是错误的。
            猜你喜欢
            • 2011-06-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多