首页 新闻 会员 周边

mysql存储过程中使用变量的问题

0
[已关闭问题] 关闭于 2017-11-01 15:08

问题1:prepare stmt from @v_sql; 这里只能使用带@符号的用户变量吗?我使用自定义的变量就报错。

问题2:@v_sql长度只支持1K吗?怎样在存储过程中修改这个的长度?我在存储过程中使用set group_concat_max_len = 4000;无效。

我想实现的是一个动态SQL行转列的问题,当数据比较多的时候,字符串的长度会超过1000,好像就会报错。

代码如下:

    #set group_concat_max_len = 4000;
    
    set @sql = '';
    set @str_tmp = '';
    select @sql := CONCAT(@sql, 'IF(btncode="',btncode,'", 1, 0) as col', btncode, ',') as aa into @str_tmp from (select distinct btncode from tb_com_buttoninfo) A order by LENGTH(aa) desc limit 1;
    
    set @v_sql = CONCAT('select distinct x.modcode, x.modname, x.parentCode, z.btncode,',LEFT(@str_tmp,CHAR_LENGTH(@str_tmp)-1),' from tb_com_ModuleInfo x inner join tb_com_RoleModuleMap y on x.modCode = y.modCode left join tb_com_ModuleButtonMap z on x.modcode = z.modcode where x.sysCode = ''' + pi_sysCode + ''' and y.roleCode = ''' + pi_roleCode + ''''); 

    prepare stmt from @v_sql; 
    execute stmt ; 
    deallocate prepare stmt;
才子佳人丶的主页 才子佳人丶 | 菜鸟二级 | 园豆:204
提问于:2017-11-01 14:31
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册