数据库函数与存储过程

定义:存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,调用存储过程和函数可以简化应用开发工作,提高数据库处理的效率。

 

函数和存储过程的区别:1.函数有且只有一个返回值,而存储过程不能有返回值。

              2.函数只能有输入参数,而存储过程可以有 in   out   inout多个类型参数。

              3.存储过程中的语句功能更丰富,实现更复杂的业务逻辑,而函数中通常不会使用 insert  update   delete等语句,只是完成查询的工作,受输入参数并返回一个结果,功能针对性比较强。

              4.存储过程一般是作为一个独立的部分来执行(call调用)。而函数可以作为查询语句的一个部分来调用。

 

 

创建函数:   delimiter  自定义符号   (一般用$$)

      create  function  函数名(形参列表) returns 返回类型

      begin

        函数体

        return  val

      end  自定义符号

      delimiter ;

    例如: delimiter  $$

        create function   test(a int,b int) returns int

       begin

        return  a+b

       end   $$

        delimiter ;

创建存储过程: delimiter  $$

        create procedure 存储过程名(形参)

        begin

          存储过程

        end $$

        delimiter ;

     释义:delimiter 自定义符号  是为了在函数内写语句方便,制定了除;之外的符号作为函数书写结束标志。

        形参列表:[in | out |  inout  ]  形参名  类型 

             in  输入  ,既可以接收变量,也可以接收常量,只能传入到存储过程里,改不了外面的值

              out 输出 ,只能接收一个变量,接收的变量不能在内部使用,但是可以修改它的值,修改后外面的也变成这个值

              inout 既可以输入又可以输出   等于  in+out

        存储过程:若干SQL语句组成,如果只有一条SQL语句,也可以不写   delimiter   begin  end

 

创建变量:set  @val =1;

局部变量方法 : 在函数内设置declare  [变量名]  [变量类型]  为局部变量,局部变量可以使用set 赋值 或者使用 into关键字。

        如: declare  t int

          set @t=5;

          select age from student where id=1  into t;

 

调用存储过程 :  call  存储过程名(参数。。。)

调用函数:select  函数名字(参数。。。)

 

使用show  status语句查看存储过程和函数的信息: 

    语法:show {procedure | function} status  [like 存储过程 或存储函数的名字]

 

使用 show create 语句查看存储过程的定义:

    语法:show create { procedure | function } 存储过程或函数名称

 

删除存储过程或函数:

     语法: drop {procedure | function }  存储过程或函数名称

 

 

posted @ 2021-04-24 15:28  苍山如海,残阳如血  阅读(495)  评论(0)    收藏  举报