美文网首页
7 存储过程

7 存储过程

作者: 沈婷_bbf1 | 来源:发表于2018-05-25 20:48 被阅读4次

存储过程与函数的区别

本质上没区别。函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行return,但是通过out参数返回多个值。 函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。

1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

  2.    当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句.

  3.    存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

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

      5.  存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值,可以向程序返回错误原因。但函数只能返回一个特定类型的值或者表对象。

  6.   存储过程中的CRUD的操作会影响数据库状态,但函数却不能。

7. 函数只能是in类型,存储过程可以使用In\out\inout类型。


前两个都只显示过程名称,第三个显示了用户,创建时间等更多信息。


和上面的前两个一样都是显示过程的名字。


delimiter//

create procedure destu (out sid int )

begin

select count(*) into sid from stu;

end//

delimiter;

 call destu(@sid );

 drop proceduredestu;

 select@sid;

注意,调用存储过程destu时括号里的参数是@sid, 因为定义存储过程的时候 ,输出sid。然后查看也是select @sid。

while循环

delimiter //

 create procedure w()

 begin

 declare i int default 10;

 while i>=0 do     循环开始  判断条件成立则开始循环

 insert into stu values(null,concat('www',i),28);

 seti =i-1;

 end while;            循环结束

 end//

 delimiter;

注意如果i=i+1放在while外面,会陷入死循环,

loop循环

delimiter //

 create procedure instu()

 begin

 declare i int default 1;

 aa:loop            循环开始

 if i>10 then

 leave aa;        判断条件成立则结束循环

 end if;

 seti=i+1;

insert into stu values (null,'aa', 12);

 end loop aa;       循环结束

 end//

 delimiter;           aa是loop的名字,这个可以随意取名。

Repeat 循环

delimiter //

 create procedure sum6 ( a int)

 begin     declare sum int default 0;

 declare i int default 1;

 repeat   -- 循环开始

          set sum=sum+i;

           set i=i+1;

           until i>a end

repeat;  --结束循环

         select sum;   --输出结果  如果是自定义函数,这里是return sum不是select

  end//   

 delimiter;

 call sum6 (100);

注意在结束循环后面加了输出结果后,执行存储过程就可以直接返回值

相关文章

  • 7 存储过程

    存储过程与函数的区别 本质上没区别。函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行retu...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL批量添加数据

    创建存储过程 执行存储过程 删除存储过程

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • 存储过程

    详见存储过程详解 创建存储过程 使用存储过程 存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • 存储过程

    ps 不能修改过程体,要修改过程体必须先删除存储过程,再重建 mysql变量的术语分类: 1.用户变量:以"@"开...

  • 存储过程

    存储过程 过程,可以简单理解为是一个函数。 函数和过程的区别:函数总是向调用者返回数据,而过程没有数据返回。 Or...

  • 存储过程

    存储过程(Stored Procedure)是一个可编程的函数,是为了完成特定功能的SQL语句集;创建的存储过程保...

  • 存储过程

    一.基础语法 说明 delimiter // 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;...

网友评论

      本文标题:7 存储过程

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