mysql 存储过程 参数 数组吗_mysql 存储过程 参数 没有数组的处理方式 | 学步园...

原来mysql存储过程是没有数组概念的,网上资料也少。

drop procedure if exists Pro_DeleteLog; -- 存在即删除

create procedure Pro_DeleteLog( Qualification varchar(100))  -- 定义参数

begin

declare i int ;

declare Start1 int;

declare Length int ;

declare TotalLenght int ;

declare filed varchar(100) ;

declare sqlStr varchar(2000) ;

declare stmtNovelSearch varchar(2000) ;

set i=1;

set Start1=1;

set Length=0;

set TotalLenght=length(Qualification);  -- 计算输入参数长度

select TotalLenght;

while i <=TotalLenght do -- i=1 开始

-- select SUBSTRING(Qualification,i,1);

if(SUBSTRING(Qualification,i,1)=',') -- 注意 mysql 的substring函数截取字符串是从1开始的,而不是0 与java JavaScript不同。

-- 从第i位开始截取一个字符,看是否等于,

then

set filed=SUBSTRING(Qualification,Start1,Length);-- 从start1开始截取length长度的字符

select filed;

set @sqlStr = CONCAT('insert into end_results(accessid,filedName,errinfo)select * from (select w1.accessid ,\'',filed ,'\' as filedName,',filed,' from wdd_audit w1 ,wdd_dbaccessinfo w2 where w1.accessid=w2.accessid )a where not exists(select e.',filed ,' from exp_results e where e.',filed,'=a.',filed,' or(e.',filed,' is null and a.',filed,' is null) );');

-- 拼装sql语句

select @sqlStr;

PREPARE stmtNovelSearch FROM @sqlStr; -- prepare 必须采用这种传参方式

execute stmtNovelSearch;

deallocate prepare stmtNovelSearch;

set Start1=i+1;

set Length=0;

else

set Length=Length+1; -- 如果不是, 则截取的长度加1

end if;

set i=i+1;

end while;

end

-- 调用存储过程  字段名以,分隔  注意最后 , 结尾

call Pro_DeleteLog('payload,backresult,dataset,effectrow,clientuser,loginuser,clientprg,')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值