MySql 存储过程使用游标循环插入数据示例
本示例通过 while...end while 循环控制游标来实现插入表记录。
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId int;
declare b int default 0; /*是否达到记录的末尾控制变量*/
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
OPEN cur_1;
FETCH cur_1 INTO f_name, f_parent, entityId; /*获取第一条记录*/
while b<>1 do
insert into t_category(FName,FParent,FTradingEntity) values(f_name, f_parent, entityId);
FETCH cur_1 INTO f_name, f_parent, entityId; /*取下一条记录*/
end while;
close cur_1;
end;
call pro_initCategoryForTradingEntity(2);
另外循环也可以用repeat...end repeat 来循环控制,以下是我最初所做的示例代码,但结果是插入的实际数据总数多出一条,在此列出作为一个反面示例代码。当然最后用的是上面while...end while 方案。
DROP PROCEDURE IF exists pro_initCategoryForTradingEntity;
create procedure pro_initCategoryForTradingEntity(tradingEntityId int)
begin
declare f_parent,entityId,b int;
declare f_name varchar(100);
DECLARE cur_1 CURSOR FOR select FName,FParent,tradingEntityId from t_category_tag;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO f_name, f_parent, entityId;
&
相关文档:
(1)mysql_connect(主机,用户名,口令);
返回一个连接号.
注意:mysql各用户的口令可以随该用户所在机器IP地址不同而改变. 另外,mSQL没有用户名机制,所以msql_connect只需要一个主机参数.主机可以是IP地址或域名.
(2)mysql_create_db(数据库名);
(3)mysql_select_db(数据库名,连接号);
连接一个数据库.
(4)mysql_q ......
http://hi.baidu.com/emersonm/blog/item/ee230a36ca566fd7a2cc2b4a.html
linux下解决mysql的字符编码问题
2009-10-06 21:03
mysql的字符编码是比繁琐的事情,我用的fedora11默认安装mysql5.1
$mysql --user=root --password=布拉布拉布拉
进入后
mysql>show variables like 'character%';   ......
最近因为忘了mysql的root密码,上网Google一下,现在把步骤记一下,防止以后忘了。
我用的是xampp软件包。
1. 停止mysql
2. 打开cmd,切换目录到 \xampp\mysql\bin, 运行
mysqld -skip-grant-tables
这条命令是跳过权限检查启动mysql服务
3. 打开另一个cmd,同样切换目 ......
MySQL count(*) 与 count(col) 查询效率比较
优化总结:
1.任何情况下SELECT COUNT(*) from xxx 是最优选择;
2.尽量减少SELECT
COUNT(*) from xxx WHERE COL = ‘xxx’ 这种查询;
3.杜绝SELECT COUNT(COL) from tablename WHERE COL = ‘xxx’
的出现。(其中COL非主键)
环境:
MySQL版本: ......