如果 DECLARE 在 PL/SQL 存储过程中是可选的,为什么会存在?

CHE*_*HKA 2 plsql declare

有人告诉我,我可以declare在存储过程的声明部分中省略关键字。declare声明部分的关键字是可选的吗?如果是,那它为什么会存在?

create or replace procedure myproc is

-- starting Declaration section
DECLARE  -- is DECLARE keyword optional? Can i omit it here?
cursor mycursor as
select ...;
var1 number;
var2 varchar2;
-- end of Declaration section

BEGIN
...
END myproc;
Run Code Online (Sandbox Code Playgroud)

Lok*_*esh 5

以下是创建 pl/sql 过程的语法。变量和游标的声明是根据需要而不是强制性的。所以如果你想声明然后声明 else 忽略:

CREATE [OR REPLACE] PROCEDURE procedure_name
    [ (parameter [,parameter]) ]

IS
    [declaration_section]

BEGIN
    executable_section

[EXCEPTION
    exception_section]

END [procedure_name];
Run Code Online (Sandbox Code Playgroud)

还想添加该Declare关键字未在过程中使用,因为声明块隐含在那里。

编辑:对于声明块不是隐式的情况,存在声明关键字。假设匿名块,现在您需要指定声明块,否则将没有地方声明变量。

匿名块的语法

DECLARE
 <constant name> CONSTANT <data type> := <value>;
 <constant name> CONSTANT <data type> DEFAULT <value>;
BEGIN
  <valid statement>;
EXCEPTION
  <exception handler>;
END;
Run Code Online (Sandbox Code Playgroud)