美文网首页
MySQL存储过程和存储函数

MySQL存储过程和存储函数

作者: 爱喝气泡水 | 来源:发表于2019-07-14 18:46 被阅读0次

    一:创建存储过程:

    demo1:判断输入参数;创建表。

    delimiter //

    create procedure proce_t1(in param int)

    begin

    declare fft varchar(20);

    if param = 1 then

    set fft = 'Mysql1';

    else

    set fft = 'Mysql2';

    end if;

    create table proce_test1(

    id int(11) not null primary key auto_increment,

    name varchar(20) not null

    );

    select fft;

    end

    //

    执行完成后,替换回来:

    delimiter;

    调用:

    call proce_t1(1);

    删除:

    drop procedure proce_t1;

    demo2:查询proce_test1记录数。reads sql data没有这句会报错

    delimiter //

    create procedure proce_t2(out count_num int)

    reads sql data

    begin

    select count(id) into count_num from proce_test1;

    end

    //

    替换回来

    delimiter;

    调用:@abc声明全局变量abc 作为输出参数。

    call proce_t2(@abc);

    select @abc;

    删除:

    drop procedure proce_t2;

    二:创建存储函数

    demo1:查询输入name参数查询id数据

    delimiter //

    create function fun_t1(ne varchar(20))

    returns int(11)

    reads sql data

    begin

    return(select id from proce_test1 where name=ne);

    end

    //

    替换回来:

    delimiter;

    调用:

    select fun_t1('2');

    删除:

    drop function fun_t1;

    三:变量的应用

    局部参数-局部变量:只在定义该局部变量的begin  end范围内有效;

    会话参数-会话变量:在整个存储过程范围内都有效;

    1、声明局部变量

    declare a int;      // 定义变量,默认值为null

    declare aa char(10) default 'innertext';  // 定义变量,设置默认值

    demo1:

    delimiter //

    create procedure p1()

    begin

    declare x char(10) default '123';

    begin

    declare x char(10) default '456';

    select x;

    end

    select x;

    end

    //

    2、声明全局变量

    不必声明即可使用,在整个过程中有效,以字符@作为起始字符。

    demo1:

    delimiter //

    create procedure p2() 

    begin

    set @t=1;

    begin

    set @t=2;

    select @t;

    end

    select @t;

    end

    //

    3、为变量赋值

    (1)declare aa varchar(10) default '456';

    (2)set aa = ‘1234’

             set @aaa = 3;

    (3)select tel into aa from table_name where id = 1;

    4、查看存储过程/函数

    (1)查看存储过程/函数状态

    show procedure | function status like 'pattern';

    (2)查看存储过程/函数语句

    show create procedure | function proce_fun_name;

    四:光标和修改已有的存储过程函数

    修改(没梳理完整,后面补)

    demo1:

    alter procedure proce_name

    modifies sql data

    sql security invoker;

    光标(没梳理完整,后面补)

    相关文章

      网友评论

          本文标题:MySQL存储过程和存储函数

          本文链接:https://www.haomeiwen.com/subject/zzhikctx.html