• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql存储过程《一》_mysql

mysql 搞代码 7年前 (2018-06-07) 159次浏览 已收录 0个评论

mysql存储过程《1》

存储过程:一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程的有点:

一:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

二:存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。

三:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

四:参数化的存储过程可以防止SQL注入式攻击。

以上的信息有点多余啊,是基础,也是常识,很多人都知道,下面直接入主题:

1 带有IN类型参数的存储过程:

 

DROP PROCEDURE IF EXISTS inPro;  CREATE PROCEDURE inPro (IN cellId VARCHAR(15)) BEGIN  SELECT   *  FROM   realtime_flow  WHERE   YEAR = '2015'  AND MONTH = '08'  AND DAY = '09'  AND cell_id = cellId;   END;

DROP PROCEDURE IF EXISTS inPro,删除已经存在的存储过程inPro,尤其是在调试的过程中,这行代码很重要,不用每次都手动去删除相应的存储过程。

inPro为存储过程的名称,存储过程名称对大小写不敏感,改变大小写不会构成重载。

(IN cellId varchar(15)),IN代表参数类型为输入型,默认也为输入型,cellId为参数名称,varchar说明参数为字符串。

BEGEIN……END,存储过程的开始和结束,中间的部分即为存储过程要做的事情。

2 带有IN类型参数,并使用case方法的存储过程:

 

DROP PROCEDURE IF EXISTS caseE;  CREATE PROCEDURE caseE (IN p INT) BEGIN  CASE p WHEN 36 THEN  INSERT INTO etl_province VALUES  (p, '国外2');   WHEN 37 THEN  INSERT INTO etl_province VALUES  (p, '国外3');  #在没有ELSE的情况下,如果p没有36、37的情况,会抛出一个异常:ERROR 1339 (20000): Case not found for CASE statement  ELSE  INSERT INTO etl_province VALUES  (100, '未提供');   END CASE;   END;

在使用case的时候需要注意,在没有ELSE的情况下,如果p没有36、37的情况,会抛出一个异常:ERROR 1339 (20000): Case not found for CASE statement。

case有两种表现形式,第一种,条件变量在case中,parameter与constant进行等于比对,符合哪个值就执行when对应的操作,最后如果都不相等就执行else对应的操作,除非你肯定你传的参数一定会有对应的when值对应,否则一定要有else步骤,避免程序抛出异常。

case parameter

        when constant then

        do something;

        when constant then

        do something;

else

        do something;

end case;

第二种,条件变量在when中,这样就可以在when中做复杂的条件判断,最后提醒,要有else步骤。

case

        when condition then

        do something;

        when condition then

        do something;

else

        do something;

end case;

欢迎大家阅读mysql存储过程《一》_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql存储过程《一》_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址