如何执行oracle存储过程?

时间:2009-12-06 05:07:08

标签: oracle plsql oracle10g ora-00900

我正在使用oracle 10g快递版。它对数据库开发人员来说非常好用。但我面临执行存储过程的一些问题。

步骤:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end

它已成功创建。但是当我执行时:

execute temp_proc;

它显示 ORA-00900:无效的SQL语句

这里需要帮助

5 个答案:

答案 0 :(得分:68)

Execute是sql * plus语法..尝试将您的调用包装在begin ..结束如下:

begin 
    temp_proc;
end;

(尽管Jeffrey说这在APEX中不起作用..但是你试图让它在SQLDeveloper中运行..尝试那里的'Run'菜单。)

答案 1 :(得分:3)

Oracle 10g Express Edition内置了Oracle Application Express(Apex)。您正在其SQL命令窗口中运行它,该窗口不支持SQL * Plus语法。

这没关系,因为(正如你所发现的)BEGIN ... END语法在Apex中有效。

答案 2 :(得分:2)

'是'和'as'都是有效的语法。默认情况下,输出禁用。尝试一个也启用输出的程序......

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.ENABLE(1000000);
  DBMS_OUTPUT.PUT_LINE('Test');
end;

...并在PLSQL块中调用它......

begin
  temp_proc;
end;

...因为SQL是非程序性的。

答案 3 :(得分:1)

我使用oracle 12,它告诉我,如果您需要调用该过程,请使用 call 关键字。 您的情况应该是:

begin
  call temp_proc;
end;

答案 4 :(得分:-1)

您是否尝试过更正这样的语法?:

create or replace procedure temp_proc AS
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end;