在 Oracle -17110 中创建存储过程 - 警告:执行完成并出现警告

Posted

技术标签:

【中文标题】在 Oracle -17110 中创建存储过程 - 警告:执行完成并出现警告【英文标题】:Creating stored procedure in Oracle -17110 - Warning: execution completed with warning 【发布时间】: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 - 警告:执行完成并出现警告

感谢您对此的任何帮助。

【问题讨论】:

【参考方案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 添加了执行示例。

以上是关于在 Oracle -17110 中创建存储过程 - 警告:执行完成并出现警告的主要内容,如果未能解决你的问题,请参考以下文章

在oracle存储过程中创建暂时表

在包 oracle 中创建存储过程

oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。

oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。

在oracle中创建带参存储过程,传进去的参数可以为空么?在存储过程中要如何判断传进来的值是不是为空。

如何在存储过程中创建视图