无法理解简单的Pl/SQL函数中的警告

Dau*_*aud 1 plsql

我正在使用Oracle 10g和SqlDeveloper.当我执行以下代码时,它说

"功能wafadar编译警告:执行完成并发出警告"

create or replace function wafadar
return varchar2(10)
is

cursor c1 is
SELECT employee_id,first_name FROM employees where department_id=50 ;

begin
  for i in c1
  loop
    dbms_output.put_line(i.first_name);
  end loop;
  return 'hello';
end;
Run Code Online (Sandbox Code Playgroud)

最后显示的错误也没有显示警告.为什么会有警告?

zep*_*zep 8

错误!

首先,你应该关心错误,我敢打赌你的函数的return子句中有一个(你不能指定 " varchar2 " 的大小).

警告

您是否在手册中寻找"警告"? http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17126/errors.htm#LNPLS00711

如何查看警告(启用您需要的类别)

alter function wafadar compile plsql_warnings='ENABLE:ALL' reuse settings
Run Code Online (Sandbox Code Playgroud)

检查:

select plsql_warnings
from   user_plsql_object_settings ps
where  ps.name = 'WAFADAR'
Run Code Online (Sandbox Code Playgroud)

你的警告:

客户端工具,如sql*plus或Sql Developer(如果支持):

 show errors
Run Code Online (Sandbox Code Playgroud)

要么

select *
from   user_errors ur
where  ur.name = 'WAFADAR'

NAME                           TYPE           SEQUENCE       LINE   POSITION TEXT                                                                             ATTRIBUTE MESSAGE_NUMBER
------------------------------ ------------ ---------- ---------- ---------- -------------------------------------------------------------------------------- --------- --------------
WAFADAR                        FUNCTION              1          1          1 PLW-05018: unit WAFADAR omitted optional AUTHID clause; default value DEFINER us WARNING             5018
Run Code Online (Sandbox Code Playgroud)

最后,我建议你阅读一下:

  1. 如何提问:http://www.catb.org/~esr/faqs/smart-questions.html#before
  2. http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17126/toc.htm
  3. 所有的" 神谕 "都在这里:http://tahiti.oracle.com/
  4. Sql开发人员oracles(如果你想使用它!):http://download.oracle.com/docs/cd/E11882_01/doc.112/e12152/toc.htm