分支语句

if-then-else if开头,end if结尾

  • 1.单分支
    书写在begin end;作用域中
if <条件> then
    ---SQL1//如果条件成立,则就执行SQL语句end if;

sql server 存储过程判断变量为空 sql存储过程ifelse_数据库


sql server 存储过程判断变量为空 sql存储过程ifelse_数据库_02


sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_03


注意,classid这里设置的不是自动增长,所以对于上面的分支结构是有缺陷的,当将逐渐设置成为自动增长时,就不需要再写入classid

  • 2.双分支
    书写在begin end;作用域中
if <条件> then
    ---SQL1//如果条件成立,则就执行SQL1语句
else
    ---SQL2//如果条件不成立,则就执行SQL1语句
end if;

sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_04


sql server 存储过程判断变量为空 sql存储过程ifelse_存储过程_05

case case开头,end case;结尾
类似于java中的switch
书写在begin end;作用域中

case a
when 1 then
    ---SQL1
when 2 then
    ---SQL2
else//相当于switch中的default
    ---SQL3
end case;

sql server 存储过程判断变量为空 sql存储过程ifelse_数据库_06


sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_07


sql server 存储过程判断变量为空 sql存储过程ifelse_存储过程_08


通过上面的学习,可以将静态变量转化成为动态变量

sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_09

循环语句

while

sql server 存储过程判断变量为空 sql存储过程ifelse_存储过程_10


sql server 存储过程判断变量为空 sql存储过程ifelse_数据库_11


其中CONCAT(str1, str2,...)函数用于拼接字符串

repeat

sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_12


sql server 存储过程判断变量为空 sql存储过程ifelse_存储过程_13


sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_14

loop

sql server 存储过程判断变量为空 sql存储过程ifelse_SQL_15


sql server 存储过程判断变量为空 sql存储过程ifelse_存储过程_16

存储过程的查询、修改和删除

就是对存储过程的增删改查

查询存储过程

存储过程是隶属于某个数据库的,也就是说当我们将存储过程创建在某个数据库中之后,只能在当前数据库中调用此存储过程
查询存储过程:就是查看有哪些存储过程

  • 语法:show procedure status where db='db_test2';意思就是展示存储过程,且要展示的是db_test2数据库中的存储过程;通过where条件选择数据库

查看存储过程的创建细节,也就是具体做了哪些操作

  • 语法:show create procedure db_test2.proc_test1;

修改存储过程,不是修改代码,主要指修改存储过程的特性

  • 语法:alter procedure <proc_name> 特征1 特征2...;实例:alter procedure proc_test1 READS SQL DATA;
  • 存储过程的特征参数包括:
    1.CONTAINS SQL 表示子程序包含SQL语句,但不包含读或写数据的语句
    2.NO SQL 表示子程序中不包含SQL语句
    3.READS SQL DATA 表示子程序中包含读数据的语句
    4.MODIFIES SQL DATA 表示子程序中包含写数据的语句
    5.COMMENT 'string'表示注释信息
    6.SQL SECURITY [DEFINER |INVOKER]指明谁有权限来执行
  • DEFINER 表示只有定义者自己才能够执行
  • INVOKER 表示调用者可以执行

删除存储过程

  • 语法:drop procedure proc_test1;
  • drop 删除数据库中的对象、数据库、数据表、列、存储过程、视图、触发器、索引...
  • delete 删除数据表中的数据