zoukankan      html  css  js  c++  java
  • mysql存储过程

    SQL命令执行过程:

    如果可以省去其中语法分析和语法编译的环节,执行效率就会提高;

    什么是存储过程?

    存储过程是SQL语句与控制语句预编译的集合,以一个名称存储并作为一个单元处理;

    简单来说是:多条相同的SQL命令执行时每次都会分析、编译、执行,而存储过程只在第一次执行时分析、编译,之后每次调用都会直接调用编译的结果,这样效率就会提高。

    存储过程的优点:

    1、增强了SQL的功能和灵活性(存储过程中可以加入多条判断语句,根据判断结果不同,执行的结果也会不同)

    2、提升了执行的效率(存储过程只在第一次执行时会分析语句、编译语句)

    3、减少网络流量(执行普通SQL传递的字符多,越复杂的SQL语句传递的字符越多,存储过程的字符数稳定且少)

    创建存储过程:

    1、没有任何参数:

       CREATE PROCEDURE sp1() SELECT NOW();

    使用存储过程,不带参数的情况下:(加不加括号都可以):

    (1)CALL sp1;

     

    (2)CALL sp1();

    删除存储过程:

      DROP PROCEDURE 存储过程名

      列:DROP PROCEDURE sp1;

    2、有一个参数:参数是id,使用removeUserById(),传递一个id参数,将参数传递给DELETE语句

       CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)

       -> DELETE FROM users WHERE id=p_id;

       执行完成后:

    (1)首先查询表中所有数据:

        

    (2)使用建立的存储过程:CALL removeUserById(17);

     

    (3)查询表中数据:

     

    3、创建拥有返回值的存储过程:根据id删除并返回删除之后的总数

      改变结束符号为“//” 在创建存储过程时会用到“;” 不能让它结束

      DELIMITER //

      创建存储过程:输入用IN ,参数是p_id, INT 类型,UNSIGNED 代表无符号整型,返回参数用OUT,参数名 userNums,有两条语句用BEGIN和END包起来,SELECT ...INTO...将查询到的结果存入INTO后面的变量userNums

      CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)

      ->BEGIN

      ->DELETE  FROM users WHERE id=p_id;

      ->SELECT COUNT(id) FROM users INTO userNums;

      ->END

      ->// 

      将结束符号改回原来的“;” 

      DELIMITER ;

     

      查询users表中的记录总数:

      

      使用存储过程并查看:@nums变量来接收返回的总数

                                   

     如果有多个参数以,号分隔,输入参数用IN ,返回参数用OUT,类型与表中字段类型一致。       

  • 相关阅读:
    使用 BinToHex() 把 TBytes 转换为十六进制字符串 回复 "梧桐栖凤" 的问题
    ASP.NET中UrlEncode应该用Uri.EscapeDataString()
    抛弃WebService,在.NET4中用 jQuery 调用 WCF
    事实证明Ajax的世界更需要ASP.NET MVC
    tinyMCEPopup.close轻松让IE 9 RC崩溃
    不走寻常路:在WebForm中使用MVC
    关于ASP.NET预编译
    不错的VS2010扩展——JSEnhancements,让js和css也折叠
    VS2010 SP1 Beta与VisualSVN的冲突引起VS2010关闭时重启
    Web应用架构探索笔记 —— 查询
  • 原文地址:https://www.cnblogs.com/YpfBolg/p/10853002.html
Copyright © 2011-2022 走看看