存储过程参数到变量

时间:2014-02-28 18:44:59

标签: mysql

这是“可以做到的”问题之一。我有一个存储过程,可能需要相当多的输入参数,所以我想知道我是否可以建立一个输入参数,然后根据逗号分隔输入设置变量。实施例...

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');

如果可能,我们将不胜感激任何示例/指导。

1 个答案:

答案 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');
相关问题