写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

sql编程中流程控制 IF ……THEN……ELSEIF……THEN………END IF的更多相关文章

  1. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  2. Node.js中流程控制

    Node.js中的流程控制可以使用async,在使用之前需要先安装,使用npm安装 npm install async --g 下面主要介绍4种流程控制的方式: 1.串行无关联:async.serie ...

  3. PL/SQL笔记(1)-流程控制,循环,异常,块

    流程控制 1.If,then,else,elsif(不是elseif) ' then null; endif; 2.Case 简单case表达式: 搜索型Case表达式: 3.goto语句 begin ...

  4. PL/SQL程序设计、流程控制

    PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...

  5. 自动化运维:(2)Shell 编程的流程控制

    一. if语句 1.单分支if语句——单一条件,只有一个输出 #!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] the ...

  6. Linux学习笔记(18) Shell编程之流程控制

    1. if语句 (1) 单分支if条件语句 格式为: # 注意条件判断式两端的空格if [ 条件判断式 ];then 程序员 fi 或者 if[ 条件判断式 ] then 程序 fi 例:判断分区使用 ...

  7. 从头开始-04.C语言中流程控制

    分支结构: if语句:当条表达式满足的时候就执行if后面大括号中语句 三种格式: if,if else , if else if else 特点:1.只有一个代码块会被执行 2.若有else那么必有一 ...

  8. shell编程 之 流程控制(条件语句和循环语句)

    1 if ...else... 基本格式: if condition then commend else commend fi 当然也可以写到一行,用[ ]表明边界,用:表示分行.比如: if [ $ ...

  9. shell编程中的控制判断语句

    if 单格式与嵌套 if 条件表达式;then #当条件为真时执行以下语句 命令列表 else #为假时执行以下语句 命令列表 fi if 语句也可以嵌套使用 if 条件表达式1;then if 条件 ...

随机推荐

  1. 深入理解Linux网络技术内幕——网络设备初始化

    概述    内核的初始化过程过程中,与网络相关的工作如下所示:     内核引导时执行start_kernel,start_kernel结束之前会调用rest_init,rest_init初始化内核线 ...

  2. Ubuntu 12.04硬盘安装教程

    从服务器下载Ubuntu 12.04光盘镜像文件到 C 盘.下载地址:\\192.167.100.225\share\Tool\Ubuntu\ubuntu-12.04.1-desktop-amd64. ...

  3. Linux:SSH服务配置文件详解

    SSH服务配置文件详解 SSH客户端配置文件 /etc/ssh/ssh——config 配置文件概要 Host * #选项“Host”只对能够匹配后面字串的计算机有效.“*”表示所有的计算机. For ...

  4. chrome flash插件地址

    C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\PepperFlash 火狐

  5. Redis学习第二课:Redis String类型及操作

    Strings类型 String是最简单的类型,一个Key对应一个Value,String类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象. Strings类型的操作: Set:设置 ...

  6. PHP文件上传大小设置

    PHP.INI配置:文件上传功能配置教程 打开php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项. php.ini中文件上 ...

  7. VM中 Ubuntu14.04 中Samba的安装配置和使用

    以前都是在Redhat 上搭建samba,现在改成在ubuntu12.04 上搭建发现 sudo /etc/init.d/samba restart  始终不行,原来,现在ubuntu下,启动服务要用 ...

  8. dubbo监控工具

    现在企业使用dubbo技术太普遍,所以dubbo的监控工具也应运而生,而且还很稳定,他就是一个web项目, 部署起来非常简单,下载个项目war包(dubbo-admin-2.5.4-SNAPSHOT. ...

  9. page 分页

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. (7)random(随机模块)

    import random print(random.random()) #得到一个随机的数,但是随机的数的范围是(0,1),这里用小括号(开曲线)代表取不到0也取不到1,o-1之间只有小数,所以只能 ...