mysql动态传参
drop PROCEDURE if exists my_pro;
create PROCEDURE my_pro(in namea varchar(50),in b varchar(100))
BEGIN
SET @selectSql = 'SELECT id,name,type from user ';
IF(namea<>'')THEN
SET @selectSql =CONCAT(@selectSql,' where name like ',"'%",namea,"%'");
END IF;
IF(b<>'')THEN
SET @selectSql =CONCAT(@selectSql,' and type in ',"(",b ,")");
END IF;
SET @selectSql =CONCAT(@selectSql,' order by id desc');
-- SELECT @selectSql; -- 打印sql语句
PREPARE stmt FROM @selectSql;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
end;
call my_pro('zhang','"123","12"');

结果如下:

创建了一个名为my_pro的存储过程,该过程接受两个输入参数namea和b。根据参数值动态构造SQL查询,用于从user表中筛选数据。如果namea不为空,则在查询中添加nameLIKE条件;如果b不为空,则添加typeIN条件。最后按id降序排列结果。调用示例展示了如何使用字符串zhang和123,12作为参数执行查询。
1657





