【问题标题】:ORA-00900: invalid SQL statement- when run a procedure in oracle 10gORA-00900: 无效的 SQL 语句 - 在 oracle 10g 中运行过程时
【发布时间】:2017-10-21 04:40:17
【问题描述】:

我正在使用 Oracle 10g 数据库并尝试使用 SQL 命令运行一个过程。

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

然后点击运行按钮。它显示:“程序已创建”。

当我尝试使用:

execute exam;

然后点击运行按钮,显示:

ORA-00900: invalid SQL statement

感谢您的帮助。

【问题讨论】:

    标签: oracle stored-procedures plsql ide procedure


    【解决方案1】:

    刚刚注意到您问题中的一个细节。您按下run 按钮。因此,您必须使用 IDE。

    您不能在 IDE 中使用 execute - 这是一个 sql*plus 命令。虽然它可能在 Oracle SQL Developer 中工作,但我不会在那里使用它;

    试试

    begin
      exam;
    end;
    

    【讨论】:

    • 如果你引用你的过程名称,那么你也应该引用过程调用。如果你不这样做 - 不要在两个地方都引用。
    • 试试create or replace exam... execute exam;(无引号)
    【解决方案2】:

    见:Syntax error while trying to call an Oracle package using ODBC in C#

    您必须在命令前加上“{”和“}”。 示例:

        processListCmd.CommandType = CommandType.StoredProcedure;
        processListCmd.CommandText = "{ call rep_invnr_proclist }";
        processListCmd.ExecuteNonQuery();
    

    【讨论】:

    • 问题与C#无关
    • @Line 你说的对!可能我对打开太多浏览器标签并在回答时选择了错误的标签感到困惑。
    • 其实这可能是正确的答案。因为,正如@kirill-leontev 所指出的,@kumar 似乎没有使用 SQL*Plus,所以使用 { call ... } 而不是 exec ... 应该会更好。
    【解决方案3】:

    去掉名称两边的双引号。它们在 Oracle 中是一种不好的做法。

    【讨论】:

    • 使用时:创建或替换程序考试开始 DBMS_OUTPUT.PUT_LINE('Test');结尾;同样的错误即将到来。
    • 必须是您在当时使用的任何工具中执行它的方式。它在 SQL*Plus 中有效吗?如果没有,您可能会将其作为 SQL 而不是作为过程调用来执行。
    • 这应该是一个评论,在我看来它并没有提供解决方案
    猜你喜欢
    • 2017-05-12
    • 2019-08-30
    • 1970-01-01
    • 2013-06-07
    • 2010-12-29
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多