我尝试为我的存储过程执行以下代码,它在第 14 行抛出错误。我无法找到错误所在,请帮助我解决。
DELIMITER $$
CREATE PROCEDURE usp_SetGems (
-- Add the parameters for the stored procedure here
p_requestid int/* =null */,
p_akcija int/* =null */)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
-- Insert statements for procedure here
if p_akcija = 0 then
declare @v_userId char(36);
declare @v_vingems int;
select @v_userId:=r.user_id, @v_vingems := r.value from Requests r
where r.Id=p_requestid;
update Users
set balance=balance+@v_vingems
where id=v_userId;
else
declare @v_userrId longtext;
declare @v_vingemss int;
select @v_userrId.user_id:=r.user_id, @v_vingemss := r.value from Requests r
where r.Id=p_requestid;
update Users
set balance=balance-@v_vingems
where id=v_userrId;
end if;
end; $$
DELIMITER ;
最佳答案
您的 Declare 语句是错误的(declare @v_userId char(36),declare @v_vingems int; .....)。以下是您的程序的正确代码:-
DELIMITER $$
CREATE PROCEDURE usp_SetGems (
-- Add the parameters for the stored procedure here
p_requestid int/* =null */,
p_akcija int/* =null */)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
-- Insert statements for procedure here
if p_akcija = 0 then
BEGIN
select r.user_id, r.value INTO @v_userId, @v_vingems from Requests r
where r.Id=p_requestid;
update Users
set balance=balance+@v_vingems
where id=v_userId;
END;
else
BEGIN
select r.user_id, r.value INTO @v_userId, @v_vingems from Requests r
where r.Id=p_requestid;
update Users
set balance=balance-@v_vingems
where id=v_userrId;
END;
end if;
end $$
DELIMITER ;
关于MySQL存储过程语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551456/