• sql存储过程


    优势: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度,效率要比T-SQL语句高。

    查询数据库中的存储过程和函数

           select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE'   //存储过程
           select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION'   //函数

           show procedure status; //存储过程
           show function status;     //函数

    位置:

    删除存储过程

    例如删除PROC_SEINFO存储过程的SQL语句如下

    DROP PROCEDURE PROC_SEINFO

    例如,删除多个存储过程proc10、proc20和proc30 

    DROP PROCEDURE proc10, proc20, proc30

    例如,删除存储过程组procs(其中包含存储过程proc1、proc2、proc3)

    DROP PROCEDURE procs

     教程

    https://www.runoob.com/w3cnote/mysql-stored-procedure.html

    https://www.cnblogs.com/geaozhang/p/6797357.html

     

     

    蔡工给的例子

    -- 创建存储过程(查询的)

    DELIMITER $ (注意要加这个才能创建成功)

    CREATE PROCEDURE pro_test()

    BEGIN

             -- 可以写多个sql语句;

             SELECT * FROM employee;

    END $

    (默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀,如 比lucax库创建函数pro_test()  lucax.pro_test()) 

     

    -- 执行存储过程(先执行上面的保存执行的语句,再执行这句)

    CALL pro_test();

     

    ----带输入参数的

    DELIMITER $
    CREATE PROCEDURE pro_test7(IN `p_playerno` VARCHAR(20))
    BEGIN
    SELECT * from ii WHERE name=p_playerno;
    END$

    -- 执行存储过程(先执行上面的保存执行的语句,再执行这句)

    CALL pro_test("123");

     

    输入类型:

    IN p_playerno INTEGER   数字

    IN `p_playerno` VARCHAR(20) 字符

     

    函数内赋值语法

     set p_playerno=2;

    sql执行赋值语法

    set @p_playerno=2;

    CALL pro_test(@p_playerno);

     

    循环语法

    DELIMITER $
    CREATE PROCEDURE proc4()
    begin
    declare var int;
    set var=0;
    while var<6 do
    insert into t values(var);
    set var=var+1;
    end while;
    end;

    传2个参数的写法

    CREATE PROCEDURE CGthert(IN p_playerno INTEGER,IN p_playerno2 INTEGER)
    begin
    while p_playerno < p_playerno2 do
    insert into t values(p_playerno);
    set p_playerno=p_playerno+1;
    end while;
    end;

     

     

  • 相关阅读:
    使用kendynet构建异步redis访问服务
    使用kendynet编写网关服务
    作为前端,我为什么选择 Angular 2?
    你必须知道的Javascript 系列
    JS日期(Date)处理函数总结
    JS数组(Array)处理函数总结
    消息推送之APNS
    消息推送之GCM
    Linux常用命令大全
    Sequential Container
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/12587545.html
Copyright © 2020-2023  润新知