-- 1 .用户变量: set @id=3; ->select@name:='张三';->select 学号,姓名 from xsqk where 学号='02020101'into@sno,@sname;
-- 2. 局部变量(只限于语句块,使用declare声明,使用set为变量赋值)-- 3.系统变量->showsession variables;--查看所有会话变量 ->showglobal variables;--查看所有全局变量-- 例1:捕获sqlstate_value->declarecontinuehandlerfor sqlstate ‘42s02’ SET@info='can not find';-- 释义:表示遇到 sqlstate‘42s02’这个异常,程序继续执行,同时设置变量值info的值为can not find-- 例2:捕获mysql_error_code->DECLARECONTINUEHANDLERFOR1146SET@info='can not find';-- 例3:先定义条件,然后再调用条件->DECLARE can_not_find CONDITION FOR1146;->DECLARECONTINUEHANDLERFOR can_not_find SET@info='can not find';-- 释义:先定义一个异常can not found 代表1146这种错误,接着定义处理程序,-- 遇到can not found 这种错误,程序继续执行,同时设置用户变量的值为can not found-- 例4:使用SQLWARNING->DECLAREEXITHANDLERFOR SQLWARNING SET@info='error';-- 释义:遇到sqlwarning 这种异常 ,退出程序同时设置info的值为error-- 例5:使用NOT FOUND->DECLAREEXITHANDLERFORNOT FOUND SET@info='can not find';-- 释义:遇到not found 这种异常,退出程序,同时set info的值为can not found-- 例6:使用SQLEXCEPTION->DECLAREEXITHANDLERFOR SQLEXCEPTION SET@info='error';-- 释义:遇到sqlexception 这种异常,退出程序同时设置info 的值为error
小贴士
注意@sum和sum,注意@sum是用户变量,而sum是局部变量,他俩的作用范围不一样
在mysql中如何定义异常呢,关键字是什么?
declare...condition
例题:以名为not_found_database的条件 error1049(42000)的定义为例,两种形式的区别别
declare not found database condition for 1049;
declare not found database condition for sqlstate '42000'; (sqlstate 表示长度为5的字符串类型错误代码)
定义完异常,如果程序出现了异常,我们如何定义处理程序呢?
declare...handler (mysql不支持undo处理类型)
handler type表示异常处理类型:continue 和 exit
condition value表示 错误值 :
1. mysql_error_code:表示数值类型的错误代码。
2 .sqlstate_value:表示包含5个字符的字符串错误值。
3 .condition_name:表示使用DECLARE…CONDITION语句定义的条件名。
4. SQLWARNING:匹配所有以01开头的SQLSTATE错误代码。
5 .NOT FOUND:匹配所有以02开头的SQLSTATE错误代码。
6 .SQLEXCEPTION:匹配所有未被SQLWARNING和NOT FOUND捕获的SQLSTATE错误代码
concat是字符串拼接函数,将多个字符串拼接成一个字符串。
cast是数据类型转换函数,trim是去掉空格。