sql编程中流程控制 IF ……THEN……ELSEIF……THEN………END IF
写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的更多相关文章
- Java编程基础——流程控制
Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...
- Node.js中流程控制
Node.js中的流程控制可以使用async,在使用之前需要先安装,使用npm安装 npm install async --g 下面主要介绍4种流程控制的方式: 1.串行无关联:async.serie ...
- PL/SQL笔记(1)-流程控制,循环,异常,块
流程控制 1.If,then,else,elsif(不是elseif) ' then null; endif; 2.Case 简单case表达式: 搜索型Case表达式: 3.goto语句 begin ...
- PL/SQL程序设计、流程控制
PL/SQL是 Procedure Language & Structured Query Language 的缩写 PL/SQL是对SQL语言存储过程语言的扩展 PL/SQL程序由三个块组成 ...
- 自动化运维:(2)Shell 编程的流程控制
一. if语句 1.单分支if语句——单一条件,只有一个输出 #!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] the ...
- Linux学习笔记(18) Shell编程之流程控制
1. if语句 (1) 单分支if条件语句 格式为: # 注意条件判断式两端的空格if [ 条件判断式 ];then 程序员 fi 或者 if[ 条件判断式 ] then 程序 fi 例:判断分区使用 ...
- 从头开始-04.C语言中流程控制
分支结构: if语句:当条表达式满足的时候就执行if后面大括号中语句 三种格式: if,if else , if else if else 特点:1.只有一个代码块会被执行 2.若有else那么必有一 ...
- shell编程 之 流程控制(条件语句和循环语句)
1 if ...else... 基本格式: if condition then commend else commend fi 当然也可以写到一行,用[ ]表明边界,用:表示分行.比如: if [ $ ...
- shell编程中的控制判断语句
if 单格式与嵌套 if 条件表达式;then #当条件为真时执行以下语句 命令列表 else #为假时执行以下语句 命令列表 fi if 语句也可以嵌套使用 if 条件表达式1;then if 条件 ...
随机推荐
- linux C 线程池(物不可穷也~)
Linux 多线程编程之 线程池 的原理和一个简单的C实现,提高对多线程编 程的认知,同步处理等操作,以及如何在实际项目中高效的利用多线程开 发. 1. 线程池介绍 为什么需要线程池??? 目前的大 ...
- IOS沙盒机制
一,ios应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒 1,每个应用程序都有自己的存储空间 2,应用程序不能翻过自己的围墙去访问别的存储空间的内容. 3,应用 ...
- win10下tomcat环境搭建
一.下载tomcat 用浏览器打开tomcat官网:http://tomcat.apache.org/ 在左侧的导航栏Download下方选择最新的Tomcat 9,点击页面下方的“ 64-bit W ...
- m函数与m文件的命名
问题 创建函数test_image,按照定义方式进行调用,一直出现下图所示的错误, 调试的过程中一直提示输入参数太多,可是test_image这个函数的输入个数和调用这个函数的输入输出数目是一致的,然 ...
- Unity打安卓包 Android 所有错误解决方案大全(几乎囊括所有打包错误 )
Unity打包出错解决方案 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
Unity-塔防游戏源码 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 2 3 4 5 6 7 8 9 ...
- 在有 UI 线程参与的同步锁(如 AutoResetEvent)内部使用 await 可能导致死锁
AutoResetEvent.ManualResetEvent.Monitor.lock 等等这些用来做同步的类,如果在异步上下文(await)中使用,需要非常谨慎. 本文将说一个在同步上下文中非常常 ...
- 状压dp终极篇(状态转移的思想)
状压dp是将每种状态都压缩成用一个二进制串,然后利用位运算进行操作的dp,而凡是dp都需要进行状态转移 对于简单的dp问题只需要一个二维数组dp[ i ][ j ]就能解决 具体操作为首先把状态压缩为 ...
- java企业级开发的实质就是前台后台如何交互的-各个对象之间如何交互,通信的-程序执行的流程是怎样的
1.开山鼻祖-servlet 如何将url 和 strvlet(.java文件)联系起来的 顺平说的:在xml中,url先找到xml,由对应的url的得到servlet那个类,然后就可以输入一个网址访 ...
- solr学习三(测试类,含普通与ExtractingRequestHandler测试)
solr客户端基本是配置出来的,服务端可以对其进行测试,我使用的是solrj服务端. 如果初学solr,先使用普通的测试类: import java.io.IOException; import ja ...