存储过程
- 把一些通用的sql语句放进去
- 提高系统的性能
- delimiter 分隔符,默认是分号,即MySQL解释器遇到分号即执行前面所有MySQL语句
- 上图用delimiter &&将分隔符改为&&,那么解释器遇到&&后才会执行
- 因为select可能有多条语句,所以不能遇到分号就马上执行,故用&&放在最后面作为结束标志
- pro_book是存储过程的名称,相当于函数名
- 参数列表中,IN表示名为bT的变量是要传入的变量,并且类型为int型(类型必须是MySQL支持的类型),OUT则表示count_num为要返回的、输出的参数
- READS SQL DATA声明存储过程执行了读数据的操作
- BEGIN跟END定义存储过程的始末点
- SELECT是表操作语句,count就是要输出的变量
- delimiter ; :改回默认的分隔符
- 第一次运行,创建一个存储过程并运行CALL语句,返回结果;后面运行只能把CALL语句刷黑,选择“运行已选择的”,若全部运行的话,则又要创建一个存储过程,这会报错:pro_book已存在
存储函数
- returns varchar(20):声明返回值的类型,注意这里用的是returns,有加“s”
- return+sql语句:直接返回执行sql语句的结果,注意这里return没s
- select:调用存储函数
定义变量
- 关键字是declare,后面跟变量名,可以是多个,然后变量类型,默认值是null
赋值
- 直接给变量赋值
- 引用别的表的值
游标
- declare关键字定义游标,名为cur_t_user2,类型为cursor(游标),for后面接sql语句;定义的游标即为sql语句结果集的游标
- open:打开游标
- fetch:取游标当前值赋给a,b;本来应该是循环的,不过还没学,现在只能取首个结果
- close:关闭游标
if语句
- 要用end if结尾
- 还可以有else if
case语句
循环语句
- aaa:循环标签,相当于循环的名字,随便起
- leave:跳出循环