写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. php require include 区别

    php提供了两种包含外部文件的方法:include()和require().include()语句是一个常规的php函数:而require() 是一种特殊的语言结构,它的使用受到一些限制.对这两者来说 ...

  2. ifstream 和 ofstream 用法。

    outfile << pContent;//不可以用这个,因为不能写完全,比如遇到字符串中出现/0就终止了 bool CTestEn_DecryptDLLDlg::WriteDataFil ...

  3. cool

    Heidi Roizen女士一度是硅谷人人争相学习的典范.她曾创办自己的公司并管理了 14 年之久.后来,她担任苹果公司主管开发者关系的高级副总裁.现在,她是 DFJ Venture 的一位风投家,她 ...

  4. 求a^b

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求a^b 由于结果可能很大,我们现在只需要知道这个值 mod 1012就可以了(为什么是1012?我的生日) ...

  5. makefile for opencv

    makefile #################################################### # Generic makefile - 万能Makefile # for ...

  6. pymysql中如何将动态的插入数据库中

    data = { ', 'name': 'zengsf', 'age': 20 } table = 'students' #获取到一个以键且为逗号分隔的字符串,返回一个字符串 keys = ', '. ...

  7. 国内Ubuntu镜像源

    国内有很多Ubuntu的镜像源,包括阿里的.网易的,还有很多教育网的源,比如:清华源.中科大源. 我们这里以中科大的源为例讲解如何修改Ubuntu 18.04里面默认的源. 编辑/etc/apt/so ...

  8. Spring4.3整合Hibernate4.3搭建Spring MVC

    1,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

  9. ASP.NET MVC配置Redis服务

    ===================== 1.下载并安装Redis.官网并未提供Windows安装版,所以去Github 下载 下载地址: https://github.com/MicrosoftA ...

  10. 各种CTF的WP

    http://l-team.org/archives/43.html PlaidCTF-2014-twenty/mtpox/doge_stege-Writeup http://l-team.org/a ...