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