【问题标题】:Creating stored procedure in Oracle -17110 - Warning: execution completed with warning在 Oracle -17110 中创建存储过程 - 警告:执行完成并出现警告
【发布时间】:2015-03-16 06:36:23
【问题描述】:

我尝试使用连接到我的 Oracle 服务器(Oracle 数据库 11g 企业版版本 11.1.0.7.0)的执行查询客户端创建以下存储过程发现 here

CREATE PROCEDURE remove_emp (employee_id NUMBER) AS
   tot_emps NUMBER;
   BEGIN
      DELETE FROM employees
      WHERE employees.employee_id = remove_emp.employee_id;
   tot_emps := tot_emps - 1;
   END;
/

我越来越关注了,

程序已创建。

17110 - 警告:执行完成并出现警告

感谢您对此的任何帮助。

【问题讨论】:

    标签: oracle stored-procedures plsql oracle11g execute


    【解决方案1】:

    始终使用 SHOW ERRORS 来查看完整的编译错误堆栈。

    我不知道你遇到了什么错误,因为它对我有用:

    SQL> CREATE PROCEDURE remove_emp (employee_id NUMBER) AS
      2     tot_emps NUMBER;
      3     BEGIN
      4        DELETE FROM emp
      5        WHERE emp.empno = remove_emp.employee_id;
      6     tot_emps := tot_emps - 1;
      7     END;
      8  /
    
    Procedure created.
    
    SQL> sho err;
    No errors.
    SQL>
    

    执行:

    SQL> exec remove_emp(9999);
    
    PL/SQL procedure successfully completed.
    
    SQL>
    

    【讨论】:

    • 正如我所提到的,我从 Oracle 文档中获取了这个过程。即使根据您的建议进行修改后,我也会收到相同的警告。似乎我无法在我的客户端上尝试显示错误。 (执行查询)
    • 文档中的例子是在HR模式中执行的。那么,你有employees 表吗?或者您是否有像 SCOTTHR 这样的示例架构?
    • 发现了问题,我需要在 EQ 中使用“作为单个语句执行”功能 :) 似乎 EQ 默认会删除分号。
    • @udarak,好的。我从 sqlplus 添加了执行示例。
    猜你喜欢
    • 2021-08-19
    • 2011-02-12
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2011-02-21
    相关资源
    最近更新 更多