mysql存储过程中sql的拼接

来源:互联网 发布:不属于大数据4v特征 编辑:程序博客网 时间:2024/05/18 09:02
使用“like”
CREATE procedure pro_sql_data(in sear_name  varchar(2000))  
BEGIN   
declare vid bigint(20);
if sear_name is not null and sear_name!='' then
select ad_place_id into vid from ad_place where name like concat('%',sear_name,'%');
end if;
...
END$$


使用“=”
CREATE procedure pro_sql_data(in sear_name  varchar(2000))  
BEGIN   
declare vid bigint(20);
if sear_name is not null and sear_name!='' then
select ad_place_id into vid from ad_place where name =sear_name;
end if;
...
END$$


在游标中使用变量
CREATE procedure pro_sql_data(in combineId  bigint(20))  
BEGIN   
declare vid bigint(20);
-- 定义游标
DECLARE rs_cursor CURSOR FOR select type,object_id from combine_code_normal where combine_id=combineId;
...
END$$


在动态sql中使用
CREATE procedure pro_sql_data(in qfs  varchar(20),in ids  varchar(20))  
BEGIN   
declare sql1 varchar(2000);
set sql1 = concat('select name  into @colsTmp from dd_report_query_fields e where e.status!=-1 and table_id in (',ids,')');
if qfs is not null and qfs !='' THEN
set sql1 = concat(sql1,' and (e.type=2 and e.table_id in (',qfs,')) ');
end if;

set @ms=sql1;
PREPARE s1 from @ms;
EXECUTE s1;
deallocate prepare s1; 
set colsStr = @colsTmp;
...
END$$
0 0