存储过程如下:
create procedure p()
begin
declare a char;
declare b char;
set a='a';
set b='b';
alter table table_name modify vol set(a,b);--vol为set类型
end;报错说set(a,b)有问题,直接set('a','b')没有问题。想问的是
1)alter不能传参数么,如果不能应该怎么写,因为set默认值要来回改,希望能做成变量的。
2)怎么获得原来的set类型默认值
create procedure p()
begin
declare a char;
declare b char;
set a='a';
set b='b';
alter table table_name modify vol set(a,b);--vol为set类型
end;报错说set(a,b)有问题,直接set('a','b')没有问题。想问的是
1)alter不能传参数么,如果不能应该怎么写,因为set默认值要来回改,希望能做成变量的。
2)怎么获得原来的set类型默认值
解决方案 »
- 求高手帮忙修改下sql语句
- 求My Sql中的存储过程怎么写?
- 从产品表根据公司ID获取每家公司的前5条产品信息,如何做?
- 关于执行.sql速率问题
- 急急急急!十万火急!请各位大侠指点如何显示mysql中数据
- 新建一个新数据库时会形成一个新的文件,这个文件在哪?
- 想学习mysql,谁那里有安装程序,能给我发个么
- [求助]mysql字符+日期+4位流水号 这种数据怎么自动生成?
- MySQL Nested Loop Join/Block Nested-Loop Join 理解
- 编写筛选时间的存储过程
- 求帮助,查询视图报#sql_63e3_0.MYI错误
- mysql avg(currentPrice)如何取两位小数。
搜了办天
解决了
办法比较囧:
CREATE PROCEDURE p11 ()
BEGIN
set @a='aaa';
set @b='bbb';
set @link="','";
set @last="')";
set @tmp= "alter table test001 modify type set('";
set @tmp= concat(@tmp,@a,@link,@b,@last);
prepare change_vol from @tmp;
execute change_vol ;
END;//