十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
begin
创新新互联,凭借10余年的网站制作、网站建设经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有1000+案例。做网站建设,选创新互联公司。
declare i int;
declare b int;
declare c int;
set @i=2;
set @b=6;
set @c=0;
set @stmt = concat('insert into t_j_goods_name (id,`code`,`name`)
values(?,?,(select distinct `a` from sheet1 limit ?, 1))');
while @i442 do
prepare s1 from @stmt;
execute s1 using @b,@i,@c;
deallocate prepare s1;
set @i=@i+1,@b=@b+1,@c=@c+1;
end while;
end
这是我今天刚写的一个存储,你参考下。
mysql的游标是不能放到循环中创建的。你想要实现你原有功能的话,可以把第二个游标定义到另外一个存储过程中,然后在创建第二个游标的地方改成调用新建的存储过程(CALL PROC_NAME()),并且把你循环第二个游标想做的事也放到新建的存储过程里面去,就ok了
修改表 - 修改列的数据类型
使用 CHANGE COLUMN 来修改列的数据类型,还必须 设置 列名。
使用 MODIFY COLUMN 不用输入2次列名。
mysql ALTER TABLE test_tab
- CHANGE COLUMN age age TINYINT;
- //
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql ALTER TABLE test_tab
- MODIFY COLUMN age BIGINT NOT NULL;
- //
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改表 - 修改列的默认值
通过MODIFY COLUMN来处理
mysql ALTER TABLE test_tab
- MODIFY COLUMN sex VARCHAR(2) DEFAULT '男';
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改表 - 修改列名
使用 CHANGE COLUMN 来修改列的名字,还必须 设置 列的数据类型
mysql desc test_tab
- //
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| val | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql ALTER TABLE test_tab
- CHANGE COLUMN val val2 VARCHAR(10); //
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql desc test_tab
- //
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| val2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
mysql
DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。
要给变量提供一个默认值,请包含一个DEFAULT子句。
值可以被指定为一个表达式,不需要为一个常数。
如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。
它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
类似如上。或者:
CREATE TEMPORARY TABLE tmp_table SELECT * FROM tables
---
以上,希望对你有所帮助。