MYSQL存储过程的一个完整实例
来源:互联网 发布:python 爬虫书 推荐 编辑:程序博客网 时间:2024/05/17 11:08
写mysql存储过程应注意的几点:
1、声明变量(declare)时要注意字符集,用变量存储表字段时,表字段与变量的字符编码要一致。
2、mysql的字符合并不能用‘+’号,必须用concat函数。
3、每个游标必须使用不同的declare continue handler for not found set done=1来控制游标的结束。
BEGIN
declare rt VARCHAR(100) CHARACTER SET gbk DEFAULT NULL;
declare done tinyint(1) default 0;
DECLARE ttname VARCHAR(60) CHARACTER SET gbk DEFAULT NULL;
DECLARE tsqltxt VARCHAR(512) CHARACTER SET gbk DEFAULT NULL;
DECLARE tremarks VARCHAR(60) CHARACTER SET gbk DEFAULT NULL;
DECLARE tfield VARCHAR(60) CHARACTER SET gbk DEFAULT NULL;
DECLARE curtable CURSOR FOR
SELECT distinct TABLE_name
FROM information_schema.TABLEs where TRIM(TABLE_COMMENT)<>'' and TRIM(TABLE_COMMENT)<>'VIEW' order by TABLE_name;
declare continue handler for not found set done=1;
set NAMES 'utf8';
drop table if EXISTS GetTableSQL;
CREATE TABLE `gettablesql` (
`tbname` varchar(60) CHARACTER SET gbk DEFAULT NULL,
`sqltxt` varchar(4096) CHARACTER SET gbk DEFAULT NULL,
`tabletitle` varchar(51) CHARACTER SET gbk DEFAULT NULL
) ENGINE=InnoDB;
open curtable;
tableloop:
LOOP
set tsqltxt='select';
FETCH curtable
INTO ttname;
IF done = 1 THEN
LEAVE tableloop;
END IF;
-- select ttname;
BEGIN
declare done1 tinyint(1) default 0;
DECLARE curfield CURSOR FOR
SELECT COLUMN_NAME,COLUMN_COMMENT
FROM information_schema.COLUMNS where upper(TABLE_name)=upper(ttname) and (COLUMN_COMMENT<>'') ;
declare continue handler for not found set done1=1;
OPEN curfield;
fieldloop:
LOOP
FETCH curfield
INTO tfield,tremarks;
IF done1 = 1 THEN
LEAVE fieldloop;
END IF;
if tsqltxt='select' THEN
set tsqltxt=CONCAT(tsqltxt,' ',tfield,' ','''',tremarks,'''');
ELSE
set tsqltxt=CONCAT(tsqltxt,',',tfield,' ','''',tremarks,'''');
END IF;
END LOOP fieldloop;
close curfield;
set tsqltxt=concat(tsqltxt,' from ',ttname);
insert into GetTableSQL values(ttname,tsqltxt,'');
END;
END LOOP tableloop;
close curtable;
update GetTableSQL as G set tabletitle=(select TABLE_COMMENT from information_schema.TABLEs s
where (trim(s.TABLE_COMMENT)<>'') and g.tbname=s.table_name );
select cast(count(*) as char) into rt from GetTableSQL;
set rt=concat('成功更新',rt,'个表的表名注释和字段注释到字典库GetTableSQL中!');
SELECT rt;
END
- MYSQL存储过程的一个完整实例
- MYSQL存储过程的一个完整实例
- MySql 存储过程实例(附完整注释)
- MySql 存储过程实例(附完整注释)
- MySql 存储过程实例(附完整注释)
- MySql 存储过程实例(附完整注释)
- MySql 存储过程实例(附完整注释)
- mysql 完整的存储过程
- 关于一个简单的mysql存储过程实例
- 一个完整的存储过程 returnValue
- Mysql的存储过程实例
- 一个对象实例化的完整过程
- mysql存储过程详细讲解及完整实例下载
- 一个Mysql的存储过程
- MySQL的一个存储过程
- C#完整执行存储过程的代码加实例[转载]
- C#完整执行存储过程的代码加实例
- 一个存储过程实例
- xwiki7.X版本升级日志
- JAVA并发处理经验(四)并行模式与算法7:AIO网络编程
- 理解以太坊 Serenity - 第二部分: Casper
- Excel图表制作(一):商务图表之甘特图
- Windows系统使用Tcl Expect Telnet 系统Crash解决方案
- MYSQL存储过程的一个完整实例
- duilib 界面库资料收集
- 后续博客移至 简书 http://www.jianshu.com/users/97cf7df43152/timeline
- win8.1下 cocos2dx-js 多线程http请求的问题
- ms-include与ms-include-src
- php简易生成excel文件
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- Excel图表制作(一):商务图表之加最大值和最小值标签的基本图
- Mac OS 安装IE