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

时间:2011-06-22 11:26:48

标签: 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;

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

1 个答案:

答案 0 :(得分: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

检查

select plsql_warnings
from   user_plsql_object_settings ps
where  ps.name = 'WAFADAR'

您的警告:

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

 show errors

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

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

  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. 所有“ oracles ”都在这里:http://tahiti.oracle.com/
  4. Sql developer oracles (如果您想使用它!):http://download.oracle.com/docs/cd/E11882_01/doc.112/e12152/toc.htm