我正在制作一个检索客户端信息的过程,问题是有两种类型的客户端具有不同的属性,因此我需要根据将其与父表连接的客户端类型返回不同的查询。 .. 我做了这个,但显然我犯了一些语法错误:
delimiter &
create procedure show_Client(in id varchar(10))
begin
if (exists (select ID from CLIENT_1 as C1 where id =C.ID),1,0)
then
begin
select * from CLIENT_1 as C1 join CLIENT C on C1.ID=C.ID where C1.ID=id;
end;
else
BEGIN
select * from CLIENT_2 as C2 join CLIENT C on C2.ID=C.ID where C2.ID=id;
end;
end if;
&
最佳答案
您没有终止您的第一个 begin
。
如果您一致地缩进代码,就更容易看到错误:
delimiter &
create procedure show_Client(in id varchar(10))
begin
if (exists (select ID from CLIENT_1 as C1 where id =C.ID),1,0)
then
begin
select * from CLIENT_1 as C1 join CLIENT C on C1.ID=C.ID where C1.ID=id;
end;
else
begin
select * from CLIENT_2 as C2 join CLIENT C on C2.ID=C.ID where C2.ID=id;
end;
end if;
&
您需要一个与第一个 begin
缩进级别相同的最终 end
。
关于MySQL 正确使用 if exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26986794/