无法调用PL / SQL用户定义的过程

时间:2014-03-31 17:54:19

标签: sql oracle-sqldeveloper

我是PL / SQL的新手,我试图定义和使用这样的程序:

create or replace procedure f()
is
BEGIN
   DBMS_OUTPUT.put_line('Hello world!');
END;
/ 

BEGIN
     f();
END;
/

然而,在调用f()中出现错误信息,并说“对象[用户名] .f无效”

我做错了什么?

1 个答案:

答案 0 :(得分:2)

创建程序时,您应该看到类似

的内容
Warning: Procedure created with compilation errors.

如果您输入"显示错误"或者在SQL Developer中打开过程并编译过程,您将获得错误列表。如果你这样做,你会看到像

这样的东西
SQL> sho err
Errors for PROCEDURE MY_PROC:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/19     PLS-00103: Encountered the symbol ")" when expecting one of the
         following:
         <an identifier> <a double-quoted delimited-identifier>
         current delete exists prior

这告诉您,create or replace procedure语句中包含的打开和关闭父项无效。如果过程不带参数,则省略定义中的括号

create or replace procedure f
is
BEGIN
   DBMS_OUTPUT.put_line('Hello world!');
END;

应该编译并且应该可以从您的匿名PL / SQL块中调用。