当前位置: 首页 > news >正文

自动写作网站灰色行业关键词优化

自动写作网站,灰色行业关键词优化,县 两学一做网站,郑州建设工程信息网站文章目录 简介存储过程的形式定义一个存储过程使用delimiter定义语句结束符存储过程中的三种参数类型流控制语句 存储过程的优缺点参考文献 简介 存储过程Stored Procedure,SQL中的另一个重要应用。 前面说的视图,只能勉强跟编程中的函数相似&#xff…

文章目录

  • 简介
  • 存储过程的形式
    • 定义一个存储过程
    • 使用delimiter定义语句结束符
    • 存储过程中的三种参数类型
    • 流控制语句
  • 存储过程的优缺点
  • 参考文献

简介

存储过程Stored Procedure,SQL中的另一个重要应用。

前面说的视图,只能勉强跟编程中的函数相似,存储过程更进一步逼近了函数这一概念。 视图仍然局限在SQL语句这个范畴,但是存储过程已经可以进一步使用控制语句了。或许,存储过程可以视为是视图的更进一步

存储过程是由SQL语句和流控制语句组成的语句集合,和函数一样,它可以接收输入参数,也可以把结果返回。一旦存储过程被创建出来,使用它就像使用函数一样简单,直接调用存储过程名就可以。

先简单看了一下存储过程究竟是什么,该怎么用,给我的感觉是:存储过程就是遵循模块化编程的指导思想下的一个比较简陋的产品。

按教程的内容,本节将主要介绍以下部分:

  • 存储过程的形式;
  • 存储过程中各组成部分的介绍;
  • 存储过程的优缺点。

存储过程的形式

定义一个存储过程

create procedure 存储过程名称([参数列表])
begin需要执行的语句
end

和视图一样,删除存储过程是drop procedure,更新存储过程是alter procedure。

举一个例子,写一个简单的存储过程,计算1+2+3+…+n等于多少。

delimiter //
create procedure `add_num`(IN n INT)
begindeclare i int;declare sum int;set i=1;set sum=0;while i <= n doset sum = sum + i;set i = i+1;end while;select sum;
end //
delimiter ;

使用delimiter将’//‘作为整个存储过程的结束符号,并在最后将结束符重新定义回默认的’;’

然后我们需要计算1到50的累加之和时,只需要调用call add_num(50);即可。

使用delimiter定义语句结束符

以MySQL举例,如果使用Navicat这种图形化工具来编写存储过程的话,是不需要手动定义delimiter的,navicat会自己加。

但是如果你使用的工具没有提供这个功能,或者是你直接在后台手敲的,那么你需要显式用delimiter来定义结束符。

那么,为什么要定义语句结束符呢?

这是因为默认情况下MySQL使用分号,即;来作为结束符。

这样的话,在存储过程中的每一行SQL语句之后加分号,就相当于告诉SQL解释器,这一行已经结束了,可以执行这一句了。

但是有时候我们不希望SQL这样做,存储过程是一个整体,我们更希望存储过程整段一起执行,所以我们需要临时定义新的delimiter,比如说’//'或者’$$‘。

存储过程中的三种参数类型

分别是IN、OUT、和INOUT型。

在这里插入图片描述

IN在存储过程中不能返回,即存储过程之外无法调用到in类型的参数,但是out和inout是可以调到的。

create procedure `func`(out max_hp float,out min_hp float,s varchar(255)
)
beginselect max(hp), min(hp)from heroswhere role_category=sinto max_hp, min_hp;
end

可以看到定义了两个out类型的参数用来接收返回值,定义了一个参数s用来接收输入,缺省情况下是IN参数

那怎么读取到存储过程返回的结果呢?

call func(@max_hp, @min_hp, '战士');
select @max_hp, @min_hp;

就可以把结果打印出来了。

流控制语句

常用的流控制语句有:

  1. begin…end:表示存储过程的范围,有点像编程里的花括号;

  2. declare:声明变量用,变量在使用前必须提前声明,声明方式declare var_name var_type;

  3. set: 赋值语句,用于变量赋值,如set var_name = value;

  4. select…into:把查询结果存到out类变量中,就是利用select来为变量赋值;

  5. if…then…elseif…then…else…endif;

  6. case:

    casewhen 表达式1 then...when 表达式2 then...else...
    end
    
  7. LOOP、leave、iterate:LOOP是循环语句,类似for循环。leave中止本层循环,类似break。iterate中止本次循环,类似continue;

  8. repeat…until…end repeat:有点类似编程里的do while语句。repeat是先执行一次循环,然后until做表达式判断,如果满足条件就退出(这里跟while是不同的),即走end repeat;若条件不满足,则继续执行循环,直到满足条件;

  9. while…do…end while:这个跟while没有区别,满足条件就循环,不满足就退出;

存储过程的优缺点

当前对存储过程的使用一直都有争议。有些公司对大型项目要求使用存储过程,但有些公司却明令禁止使用(如阿里)。

优点:

  1. 一次编译多次使用。存储过程只在创建时执行编译,之后都不需要再进行编译;
  2. 减少开发工作量。将代码封装成模块,实际上是模块化编程思想。这样,多个模块之间可以重复使用,而且也方便复杂查询的拆解。
  3. 安全。可以设定哪些用户可以使用存储过程。
  4. 减少网络传输量。连接一次数据库,执行整个存储过程即可,不需要多次连接数据库,一行一行执行代码。

缺点:

  1. 可移植性差。无法跨数据库移植。
  2. 调试困难。多数DBMS不支持存储过程的调试,所以对于复杂的存储过程,其开发和维护都相当困难。
  3. 版本管理困难。存储过程本身没有版本控制,在迭代更新时会比较麻烦。另外,存储过程很容易失效,比如说数据表索引发生变化时,可能会导致失效;
  4. 不适合高并发。对于分库分表的并发查询,很难维护。

参考文献

  1. 13丨什么是存储过程,在实际项目中用得多么?
http://www.khdw.cn/news/50853.html

相关文章:

  • jsp旅游网站的建设宁波seo
  • 最近高清免费资源windows系统优化软件
  • 网站开发南京招聘网上销售有哪些方法
  • 无人机公司网站建设北京网站seowyhseo
  • 营口电商平台网站建设优化视频
  • 网站建设起到计划和指导作用廊坊首页霸屏优化
  • 做网站是哪个专业西安网络推广公司
  • 网站制作公司百度指数如何分析数据
  • 如何做棋牌网站seo优化的价格
  • iis建设网站教程最新军事新闻 今日 最新消息
  • 在建设部网站如何查询注册信息百度旗下推广平台有哪些
  • 东铁匠营网站建设上海seo博客
  • 现在做网站开发吗sem优化师是做什么的
  • 普斯泰网站建设关键词歌词完整版
  • 百兆独享 做资源网站网站发布平台
  • 郑州电商网站开发口碑营销属于什么营销
  • 网站建设顺德搜索关键词技巧
  • 泉州专业网站建设费用360优化大师官网
  • 音乐网站源码带手机版免费网站模板
  • 有服务器做网站今天发生了什么重大新闻
  • 如何建设废品网站制作网站的步骤和过程
  • 深圳外贸建站网络推广价格网站首页制作
  • 峰峰网站建设郑州做网络营销渠道
  • 恢复最近删除的网站找做网站的公司
  • 南京专业做网站公司semi认证
  • 七宝做网站简述网站制作的步骤
  • 做网站游戏推广赚钱吗凤凰军事新闻最新消息
  • 江苏建设监理协会官方网站如何制作一个网页页面
  • 做网站公司怎么找爱站网使用体验
  • 营销型外贸网站建设百度安装app