• 6.mysql存储过程


    存储过程

    1、命令

    创建及调用

    定义分隔符
    	DELIMITER $
    创建存储过程
        delimiter $$
        create procedure 名称()
          begin
            语句
          end$$
        delimiter ;
    
    调用存储过程
    call 名称();
    

    查看存储过程

    show procedure status where db='';
    show create procedure pro_name;
    

    删除存储过程

    drop procedure pro_name;
    

    2、参数

    in
    	create procedure getname(in  name  varchar(100) default 'stone')
    out
    	create procedure getsalary(in  n  varchar(100), out sla int)
    	call getsalary(‘stone’,@s)
    	select @s;
    inout
    	结合了输入输出的功能,尽量少用
    

    3、存储过程语句

    IF语句

    IF expression THEN
        statements;
    END IF;
    
    IF expression THEN
        statements;
    ELSE
        else-statements
    END IF;
    

    CASE语句

    CASE
    WHEN [condition1]
    THEN [result1]
    ……
    WHEN [conditionn]
    THEN [resultn]
    ELSE result(n+1)
    END;
    

    WHILE语句

    先检验条件,再执行循环体
    
    while 条件 do
    
    --循环体;
    
    end while;
    

    repeat语句

    先执行一遍循环体,再检验条件
    
    repeat 
    
    --循环体;
    
    until 循环条件 
    
    end repeat;
    

    4、自定义函数

    CREATE FUNCTION 函数(参数 类型,[参数 类型,...])
    RETURNS 返回类型
    BEGIN
    return 
    END;
    

    5、储存过程和函数的区别

    1、存储过程可以有多个in,out,inout参数,而函数只有输入参数类型,而且不能带in
    2、存储过程实现的功能要复杂一些;而函数的单一功能性(针对性)更强。
    3、存储过程可以返回多个值;存储函数只能有一个返回值。
    4、存储过程一般独立的来执行;而存储函数可以作为其它sql语句的组成部分来出现。
    5、存储过程可以调用存储函数。函数不能调用存储过程。

    6、实例

    delimiter $$
    create procedure insert_c(num int)
    begin
    
    declare ran_name varchar(100) default 'QWERTYUIOPASDFFGHJKLZXVCBNMqazwsxedcrfvtgbyhnujmikolp';
    declare ran_age int;
    declare name varchar(50) default '';
    declare i int default 0;
    declare j int default 0;
    
    start transaction;
    while  i < num  do
    set ran_age = floor(rand()*100);
        while j < 20 do
        set name = concat(name,substring(ran_name,floor(1+rand()*53),1));
        set j=j+1;
        end while;
    
    insert into course(cname,age) values(name,ran_age);
    set i = i+1;
    set name = '';
    set j = 0;
    end while;
    commit;
    
    end$$
    delimiter ;
    
  • 相关阅读:
    Maven Resources Plugin
    Git Delete Last Commit
    查看剩余空间
    使用 Jython 连接 Apache Derby 数据库
    JVM动态语言比武
    jython embedded into java
    maven testNG
    why clojure?
    jython一小时学会
    gnote
  • 原文地址:https://www.cnblogs.com/unsigned1995/p/14154184.html
Copyright © 2020-2023  润新知