用mysql写了一个存储过程,结果一直报错,死活没看见在哪错了求指点!
BEGIN declare @value varchar; if EXISTS (select 1 from test where name=username) then select @value:= name from test where name=username; else set @value="不知道!"; end if; select @value; END;
if EXISTS (select 1 from test where name=username) 一直是这一句报错,其中username是varchar类型的参数。
求指点!
解决方案
1
定义变量不要用@
varchar要指定长度
begin
declare $value varchar(50);
if EXISTS (select 1 from test where name=username)
then
select name into $value from test where name=username;
else
set $value=”不知道!”;
end if;
select $value;
end
varchar要指定长度
begin
declare $value varchar(50);
if EXISTS (select 1 from test where name=username)
then
select name into $value from test where name=username;
else
set $value=”不知道!”;
end if;
select $value;
end
15
前面那句 create procedure 呢,这个不能删掉的;
不然 mysql 认为这是一个匿名块,匿名块,不能使用 if exists 这样的语句;必须放在存储过程中;
不然 mysql 认为这是一个匿名块,匿名块,不能使用 if exists 这样的语句;必须放在存储过程中;
2
直接到MYSQL命令行工具中,加上
delimiter //
create procedure …
begin
..
end//
//
delimiter //
create procedure …
begin
..
end//
//
2
加上这个应该就可以了