在 BEGIN..END 过程中声明变量时出现编译错误 PL/SQL

Compilation error when declaring variables in BEGIN..END procedure PL/SQL

我有一个编译错误,无法在程序 PL/SQL 中声明变量,该程序正在尝试其他来源的解决方案。谁能帮忙看看是什么问题?

CREATE OR REPLACE PROCEDURE add_vaccine
(p_id IN VARCHAR, d_id IN VARCHAR, p_vdate IN DATE, p_vaccinated IN VARCHAR)

AS
    
    
BEGIN

    DECLARE counter NUMBER(MAX);

    --Prompt user to input vaccination and visit detail
    DBMS_OUTPUT.PUT_LINE('Patient ID = ' || p_id);
    DBMS_OUTPUT.PUT_LINE('Doctor ID = ' || d_id);
    DBMS_OUTPUT.PUT_LINE('Date = ' || p_vdate);
    DBMS_OUTPUT.PUT_LINE('Vaccinated = ' || p_vaccinated);
    
    

END;
/

代码未完成,但我卡在了变量声明处。

因此在您的过程中的第一个 BEGIN 之前有一个隐含的 DECLARE

SQL> CREATE OR REPLACE PROCEDURE add_vaccine
  2  (p_id IN VARCHAR, d_id IN VARCHAR, p_vdate IN DATE, p_vaccinated IN VARCHAR)
  3  AS
  4
  5      counter NUMBER;
  6  BEGIN
  7      --Prompt user to input vaccination and visit detail
  8      DBMS_OUTPUT.PUT_LINE('Patient ID = ' || p_id);
  9      DBMS_OUTPUT.PUT_LINE('Doctor ID = ' || d_id);
 10      DBMS_OUTPUT.PUT_LINE('Date = ' || p_vdate);
 11      DBMS_OUTPUT.PUT_LINE('Vaccinated = ' || p_vaccinated);
 12  END;
 13  /

Procedure created.

只要有 DECLARE 部分,就必须有包含一些代码的 BEGIN 和 END。

如果不需要在里面声明,可以在AS之后声明。

CREATE OR REPLACE PROCEDURE STH()
AS
<DECLARE VARIABLES HERE>
BEGIN

DECLARE
<YOU CAN DECLARE HERE AS WELL>
BEGIN 
    DBMS_OUTPUT.PUT_LINE('HELLO');
END;
-- Do something here
END;