create or replace procedure minvalue(x in number,y in number,z in number)
as
begin
if x< y then
z := x;
else
z:= y;
end if;
end;
/
compilation error.
在此代码中,x和y是当用户运行此过程并取出答案时获取值的参数。此代码查找x和y之间的最小值,并通过z存储最小值。
我在sql&gt;上创建了这个过程。现在我怎么能把它再次放入缓冲区。这样我就可以修改/增强它。但是我不知道如何通过sql命令打开这个过程。请帮助我。
答案 0 :(得分:2)
在SQL * Plus中,ed
命令将在默认编辑器中打开您的最后一个语句(除非您在login.sql
脚本中定义了其他内容)。
将代码编写为体面文本编辑器或IDE中的脚本并在SQL * Plus命令行中运行这些脚本是一种很好的做法。
所以,实际的错误是:
create or replace minvalue
那应该是create or replace procedure minvalue
。清除ORA-00922
缺失或无效选项例外后,下一个问题是:
c := x;
您尚未声明变量c
,因此这将导致ORA-00904
无效的标识符异常。
答案 1 :(得分:1)
你只需要再次执行你的语句,就像它说create or replace
存储过程一样。
如果您想知道发生了哪些错误,请在执行后输入show errors
。
PS:你不能使用参数z
,为什么会这样?如果你想返回一些东西,你需要一个带有返回值的函数而不是一个过程。
答案 2 :(得分:1)
SHOW ERROR
进行验证。ed
修改代码。 afiedt.buf
文件。/
重新编译代码。例如,
SQL> set serveroutput on;
SQL>
SQL> BEGIN
2 NULL;
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> SHOW ERROR
No errors.
SQL> ed
Wrote file afiedt.buf
1 BEGIN
2 DBMS_OUTPUT.pUT_LINE('code modified');
3* END;
SQL> /
code modified
PL/SQL procedure successfully completed.
SQL>