Oracle 存储过程 - 我可以为声明块中的变量赋值吗?

kyo*_*ryu 2 oracle

我正在 oracle 中编写一个存储过程,我想从一开始就为变量赋值:

CREATE PROCEDURE proc
(
   param1
   , param2
)
AS
   variable1 INT AS SELECT MAX(value) FROM table WHERE field = param1;
BEGIN
...
Run Code Online (Sandbox Code Playgroud)

是否允许或者我应该在可执行块中执行它?

Ed *_*bbs 5

Oracle 将查询值分配给这样的变量......

SELECT MAX(value) INTO variable1 FROM table WHERE field = param1;
Run Code Online (Sandbox Code Playgroud)

...正因为如此,您无法在声明块中将变量初始化为查询值。它必须位于执行和/或异常块中:

CREATE PROCEDURE proc
(
   param1; -- don't forget the data type here!
 , param2; -- or here!
)
AS
   variable1 INT;
BEGIN
  SELECT MAX(value) INTO variable1 FROM table WHERE field = param1;
  ...
Run Code Online (Sandbox Code Playgroud)