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 是当用户运行此过程时取值的参数,z 取出答案。 此代码查找 x 和 y 之间的最小值,并通过 z 存储最小值。
我在 sql> 上创建了这个过程。 现在我如何再次将其放入缓冲区。 以便我可以修改/增强它。但是我不知道如何通过sql命令打开此过程。请帮助我。
在 SQL*Plus 中,ed
命令将在默认编辑器中打开您的最后一条语句(除非您在login.sql
脚本中定义了其他内容(。
最好在体面的文本编辑器或 IDE 中将代码编写为脚本,并在 SQL*Plus 命令行上运行这些脚本。
因此,实际错误是这样的:
create or replace minvalue
那应该是create or replace procedure minvalue
. 清除ORA-00922
缺失或无效选项异常后,下一个问题是:
c := x;
您尚未声明变量c
因此这将引发ORA-00904
无效标识符异常。
你只需要再次执行你的语句,它按照它所说的create or replace
存储过程执行。
如果想知道发生了哪些错误,请在执行后输入show errors
。
PS:你不使用参数z
那为什么会出现呢?如果要返回某些内容,则需要一个具有返回值的函数,而不是一个过程。
- 编译 PL/SQL 代码。
- 使用
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>