欢迎投稿

今日深度:

Mysql 5.7存储过程的学习,

Mysql 5.7存储过程的学习,


-- 无参创建
CREATE PROCEDURE demo1()
BEGIN 
    SELECT * from cli_txinfo LIMIT 1;
end;
-- 调用,输出查询结果
call demo1();


-- 2.有参创建,格式为:in 参数名 类型(长度)....
-- 单参demo2(in tableName varchar(20))
-- 多参demo2(in tableName varchar(20),name varchar(40))
create procedure demo2(in tableName varchar(20),name varchar(40))
BEGIN
    SELECT * from cli_txinfo where txname = name LIMIT 1;
end;
-- 调用,输出查询结果
call demo2("abc001","专属顾问绑定申请列表查询");


--3.有参创建,值返回格式为:out 参数名 类型(长度)
create procedure demo3(in tx varchar(20),out otx varchar(20))
begin 
    SELECT txname from cli_txinfo where txcode = tx into otx;
end;
-- 调用,输出结果存储到@tx中,只显示sql的执行情况,没有输出操作结果,变量命名必须以@开头
-- call demo3("abd002",tx);  ---->>编译错误
call demo3("abd002",@tx);
-- 变量传参,格式为 set @变量名 = 值
-- set @a = "abd002";
-- call demo3(@a,@tx);
-- 查询输出结果变量名的值
SELECT @tx;


-- 存储过程的复杂sql语句
create procedure demo4()
begin 
  SELECT * from cli_txinfo limit 1;
  select * from cli_role limit 1;
END;
demo
call demo4;

-- 动态传入表名(案例以两个数据库进行表的同步)
-- 使用CONCAT进行sql的拼接,拼接处必须留有空格,比如 concat('insert into '),不然拼接无法识别参数
-- prepare预处理,execute 执行,DEALLOCATE PREPARE释放资源 
create procedure demo5(in syncTable varchar(20))
BEGIN
    set @deleteSql = CONCAT('truncate table keyun.',syncTable);
        set @insertSql = CONCAT('insert into keyun.',syncTable,' SELECT distinct * ','from keyun_sync.',syncTable);
    prepare delstmt from @deleteSql;
    prepare insstmt from @insertSql;
    execute delstmt;
    execute insstmt;
   DEALLOCATE PREPARE delstmt;
   DEALLOCATE PREPARE insstmt;
end;
-- 调用,输出查询结果
call demo5("third_binding");

 

  6.查看存储过程:

    • 查看存储过程的创建语句:show create procedure 存储过程名;
    • 查看存储过程状态:show procedure status;【显示的内容包括创建时间、注释、定义的用户、安全类型等等】

       7.修改存储过程:

    • 修改存储过程只能修改那些选项,并不能修改传入传出参数或者sql语句。
    • alter procedure 存储过程名 选项;

      8.删除存储过程:

    • 语法:drop procedure 存储过程名;
    • 示例:
      • drop procedure demo1;

 

www.htsjk.Com true http://www.htsjk.com/Mysql/30579.html NewsArticle Mysql 5.7存储过程的学习, -- 无参创建 CREATE PROCEDURE demo1() BEGIN SELECT * from cli_txinfo LIMIT 1 ; end ; -- 调用,输出查询结果 call demo1(); -- 2.有参创建,格式为:in 参数名 类型(长度).... -- 单参...
相关文章
    暂无相关文章
评论暂时关闭