我正在使用oracle 10g快递版。它对数据库开发人员来说非常好用。但我面临执行存储过程的一些问题。
步骤:
create or replace procedure temp_proc is
begin
DBMS_OUTPUT.PUT_LINE('Test');
end
它已成功创建。但是当我执行时:
execute temp_proc;
它显示 ORA-00900:无效的SQL语句
这里需要帮助
答案 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;