Stored procedures 如果或选择上面的“在过程上开始”,则无法写入

Stored procedures 如果或选择上面的“在过程上开始”,则无法写入,stored-procedures,plsql,pls-00103,Stored Procedures,Plsql,Pls 00103,我正在为一个班级项目建立一个程序,我必须发明一些与我的国家足球联赛相关的程序。现在我正在开发一个程序来展示比赛的结果,包括教练、球员、卡片和进球,然后介绍联赛回合和球队。问题是,由于if结构上出现以下错误之一(我只创建了两个回合,因此只有两个条件),我无法将回合日期设置为使用if创建的变量,我无法将表格中的数据选择到我为存储数据而创建的其他变量中,这些数据不需要放在光标上,因为每场比赛、裁判员姓名和教练姓名都是唯一的,但还有另一个“预期”错误。有什么帮助吗?提前谢谢你! PS:代码的其余部分仍在

我正在为一个班级项目建立一个程序,我必须发明一些与我的国家足球联赛相关的程序。现在我正在开发一个程序来展示比赛的结果,包括教练、球员、卡片和进球,然后介绍联赛回合和球队。问题是,由于if结构上出现以下错误之一(我只创建了两个回合,因此只有两个条件),我无法将回合日期设置为使用if创建的变量,我无法将表格中的数据选择到我为存储数据而创建的其他变量中,这些数据不需要放在光标上,因为每场比赛、裁判员姓名和教练姓名都是唯一的,但还有另一个“预期”错误。有什么帮助吗?提前谢谢你! PS:代码的其余部分仍在开发中,因此可能有一些不完整的部分。Arbitro代表裁判,entrenador代表教练或经理,nombre代表名字,partido代表比赛 错误:


关于我评论的结构:

create procedure as
  <declaration section>
begin
  <executable section>
end;

要根据条件设置声明值,可以使用
case
。例如:

fecha date := 
    case jornada
        when 1 then date '2021-03-04'
        when 2 then date '2021-03-13'
    end;

重新阅读关于基本PL/SQL过程结构的注释。您的代码看起来就像是用铲子从桶中抓取了一堆语句,并将它们扔进编辑器,希望它能够编译。不会的。完全混乱。如果不能理解,很抱歉,但我已经创建了另外两个程序,我没有看到任何类似的问题。我只是想问一下if和first select,这是我学习这门语言的第二个月了,很抱歉,如果它看起来像一团乱麻。没问题,我们都是初学者。您的“问题”与
if
本身无关(除了日期应作为日期处理,而不是作为“字符串”(不包含在单引号中)之外)。请重新阅读我之前所说的内容,尤其是第一条语句。所有问题都已解决!非常感谢您的知识!!欢迎您。
CREATE OR replace PROCEDURE comprobarpartido(
  jornada  IN  NUMBER,
  equipo   IN  VARCHAR2
)
AS
  fecha       DATE;
  elocal      VARCHAR2(30);
  evisitante  VARCHAR2(30);
  arbip       VARCHAR2(30);
  asistente   VARCHAR2(30);

  CURSOR c1 IS
  SELECT j.nombre,
         j.apellido,
         eq.nombre
  FROM partido p
  INNER JOIN partido_jugador  pj ON p.id = partido_jugador.id_partido
  INNER JOIN jugador          j ON pj.id_jugador = j.id
  INNER JOIN equipo           eq ON j.id_equipo = eq.id
  ORDER BY eq.id,
           j.cod_posicion;

BEGIN 
  IF jornada = 1 THEN
     fecha := DATE '2021-03-04';
  ELSIF jornada = 2 THEN
     fecha := DATE '2021-03-13';
  ELSE
     dbms_output.put_line('ERROR');
  END IF;
  
  SELECT APR.NOMBRE, ASS.NOMBRE, ENL.NOMBRE, ENV.NOMBRE
    INTO ARBIP     , ASISTENTE , ELOCAL    , EVISITANTE
  FROM partido_jugador pa
  INNER JOIN partido          p   ON pa.id_partido = p.id
  INNER JOIN equipo           el  ON p.id_local = el.id
  INNER JOIN equipo           ev  ON p.id_visitante = ev.id
  INNER JOIN entrenador       enl ON el.id_entrenador = enl.id
  INNER JOIN entrenador       env ON ev.id_entrenador = env.id
  INNER JOIN partido_arbitro  par ON p.id = par.id_partido
  INNER JOIN arbitro          apr ON par.id_arbitroc = apr.id
  INNER JOIN arbitro          ass ON par.id_arbitroa = ass.id
  WHERE p.fecha = fecha
    AND (   equipo = ev.nombre
         OR equipo = el.nombre
        ); 
END comprobarpartido;
fecha date := 
    case jornada
        when 1 then date '2021-03-04'
        when 2 then date '2021-03-13'
    end;