Sql 这是干什么的?列出变量而不声明它们?

Sql 这是干什么的?列出变量而不声明它们?,sql,oracle,plsql,Sql,Oracle,Plsql,这是我的代码: --this section creates/replaces the C_PND Procedure --and passes 2variables create or replace PROCEDURE C_PND ( p_whse in varchar2, p_RC OUT INT ) --No clue what we're doing here as there is no DECLARE as cv SYS_REFCURS

这是我的代码:

--this section creates/replaces the C_PND Procedure 
--and passes 2variables
    create or replace PROCEDURE    C_PND
   (
    p_whse in varchar2,
    p_RC OUT INT
   )
--No clue what we're doing here as there is no DECLARE
as
 cv SYS_REFCURSOR;  -- cursor variable
 v_pull_zone locn_hdr.pull_zone%TYPE;
 v_active varchar2(1);
 v_low_wm number(3);
 v_high_wm number(3);
 v_lock_code resv_locn_hdr.locn_putaway_lock%TYPE;

--initializes this variable
BEGIN
p_RC := 0;
--setting values of the the CV
OPEN cv FOR
select code_id,
     nvl(trim(substr(sc.misc_flags,1,1)),'N') v_active,
     nvl(trim(substr(sc.misc_flags,2,3)),'100') high_wm,
     nvl(trim(substr(sc.misc_flags,5,3)),'0') low_wm,
     trim(substr(sc.misc_flags,8,2)) lock_code
from sys_code sc
where sc.rec_type = 'C'
and sc.code_type = 'PND';
--inputting the CV into these variables
LOOP
  FETCH cv INTO v_pull_zone, v_active, v_high_wm, v_low_wm, v_lock_code;

  EXIT WHEN cv%NOTFOUND;
  ............
  ............
  ............
我想我理解了大部分内容,但我的问题在于as后面的五行(代码段的第6-11行)。我的印象是,无论何时在PL SQL中使用变量,都必须声明它们。即使您使用的是游标变量


我是不是错了?或者不需要声明CVs使用的变量?我还包括了一些注释(以--开头),这些注释显示了我对SQL的看法。

你说得有点对。必须在匿名块中使用declare声明变量,如中所示:

DECLARE
...
BEGIN
...
END;
您的代码是一个过程,并且在

CREATE OR REPLACE xxx as
(implicit DECLARE)

BEGIN

...

END;

你说得有点对。必须在匿名块中使用declare声明变量,如中所示:

DECLARE
...
BEGIN
...
END;
您的代码是一个过程,并且在

CREATE OR REPLACE xxx as
(implicit DECLARE)

BEGIN

...

END;

你说得有点对。必须在匿名块中使用declare声明变量,如中所示:

DECLARE
...
BEGIN
...
END;
您的代码是一个过程,并且在

CREATE OR REPLACE xxx as
(implicit DECLARE)

BEGIN

...

END;

你说得有点对。必须在匿名块中使用declare声明变量,如中所示:

DECLARE
...
BEGIN
...
END;
您的代码是一个过程,并且在

CREATE OR REPLACE xxx as
(implicit DECLARE)

BEGIN

...

END;

这很有道理。谢谢你简洁明了的回答!!嗨,每当有人对你的问题给出正确/可能的答案时。请务必接受他们的回答以表示感谢。只是一些建议。Cheers=)@fletch367根据您发现最有用的答案,在左手边是一个灰色的复选标记。点击它来接受你问题的答案。非常有意义。谢谢你简洁明了的回答!!嗨,每当有人对你的问题给出正确/可能的答案时。请务必接受他们的回答以表示感谢。只是一些建议。Cheers=)@fletch367根据您发现最有用的答案,在左手边是一个灰色的复选标记。点击它来接受你问题的答案。非常有意义。谢谢你简洁明了的回答!!嗨,每当有人对你的问题给出正确/可能的答案时。请务必接受他们的回答以表示感谢。只是一些建议。Cheers=)@fletch367根据您发现最有用的答案,在左手边是一个灰色的复选标记。点击它来接受你问题的答案。非常有意义。谢谢你简洁明了的回答!!嗨,每当有人对你的问题给出正确/可能的答案时。请务必接受他们的回答以表示感谢。只是一些建议。Cheers=)@fletch367根据您发现最有用的答案,在左手边是一个灰色的复选标记。点击它接受你问题的答案。