这是“可以做到的”问题之一。我有一个存储过程,可能需要相当多的输入参数,所以我想知道我是否可以建立一个输入参数,然后根据逗号分隔输入设置变量。实施例...
drop procedure if exists sptest;
delimiter $$
create procedure sptest (v1 varchar(254))
begin
if v1=1 then set @vx1:='test1';end if;
if v1=2 then set @vx2:='test2';end if;
if v1=3 then set @vx3:='test3';end if;
if v1=4 then set @vx4:='test4';end if;
select v1;
select @vx1,@vx2,@vx3,@vx4;
end
call sptest('1,2,3,4');
如果可能,我们将不胜感激任何示例/指导。
答案 0 :(得分:1)
MySQL附带一个名为FIND_IN_SET
的字符串函数。我想那是你的答案。以下是它的工作原理:
DROP PROCEDURE IF EXISTS sptest;
DELIMITER $$
CREATE PROCEDURE sptest (v1 VARCHAR(254))
BEGIN
IF FIND_IN_SET('1', v1) THEN SET @vx1:='test1'; END IF;
IF FIND_IN_SET('2', v1) THEN SET @vx2:='test2'; END IF;
IF FIND_IN_SET('3', v1) THEN SET @vx3:='test3'; END IF;
IF FIND_IN_SET('4', v1) THEN SET @vx4:='test4'; END IF;
SELECT v1;
SELECT @vx1, @vx2, @vx3, @vx4;
END$$
CALL sptest('1,2,3,4');