zoukankan      html  css  js  c++  java
  • 存储过程使用相关知识

    存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。


    --------------------基本语法--------------------------

    一、创建存储过程
      create procedure 存储过程名称
      参数列表
      as
      begin
        ……
      end
    二、调用存储过程
      call 存储过程名称()
    三、删除存储过程
      drop procedure 存储过程名称
      注意:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程。
    四、其他常用命令
      1.show procedure status
      显示数据库中所有存储过程基本信息
      2.show create procedure 存储过程名称
      显示某个存储过程详细信息

    五、注释
      单行注释:--
      多行注释:/*  注释内容*/
    六、区块定义
      begin
        代码块
      end
      这里的begin和end相当于C语言中的{和}
    七、执行其他存储过程EXEC
      例如:EXEC dbo.[SalesByYear] @BeginDate='1/01/90',@EndDate='1/01/08';

    ------------------------------数据类型------------------------------
    一、基本数据类型
      可以在SQL Management中查看到相关的数据类型。
    二、变量
      1.自定义变量:declare @变量名  数据类型;
      2.变量赋值:set @变量名=值;
    三、运算符
      1.算术运算符
        +、-、*、/、DIV(整除  例如:10 DIV 3值为3)、%(取模)
      2.比较运算符
        >、<、<=、>=、between  and、not between and、in、not in、=、<>|!=、<=>(严格比较两个NULL值是否相等   例如:NULL<=>NULL true)、LIKE 、REGEXP、is null、IS NOT NULL
      3.位运算符
        |、&、<<、>>、~
    ------------------------------流程控制------------------------------
    一、顺序结构
    二、分支结构
      if    else
      case
    三、循环结构
      for循环
      while循环
      loop循环
      repeat until循环
    ------------------------------输入和输出------------------------------
    三种参数类型:INPUT、OUTPUT、INPUTOUTPUT
      INPUT输入参数
        表示参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
      OUTPUT输出参数。
        表示该参数的值在存储过程内部被改变后可返回。
      INPUTOUTPUT输入输出参数
        表示该参数的值在调用时指定,并且可被改变和返回。
    ------------------------------总结------------------------------
    (1)存储过程共分为3类:
        A、返回记录集的存储过程,其执行结果是一个记录集。例如:从数据库中检索出符合条件的记录。
        B、返回数值的存储过程,其执行完以后返回一个值。例如:在数据库中执行一个有返回值的函数或命       令。
        C、行为存储过程,用来实现数据库的某个功能,而没有返回值。例如:数据库中进行更新和删除操作。
    (2)含有return的存储过程其返回值为return返回的那个值。
    (3)没有return的存储过程,不论执行结果有无记录集,其返回值是0。
    (4)带输出参数的存储过程。
    (5)通过程序获得存储过程的返回值:
      

    View Code

    ------------------------------存储过程递归调用------------------------------

    CREATE procedure [dbo].[cycleProcedure]
    @parameter int ,
    @result int output
    as
    declare @temp int;
    begin
        if @parameter>1
        begin
            set @temp=@parameter-1;
            exec cycleProcedure @temp,@result output;
            set @result=@parameter*@result;
        end
        else
            set @result=@parameter;
        select @result;
    end
     

     

  • 相关阅读:
    Linux 虚拟机虚拟网卡问题导致无法连接问题
    使用 Load Balancer,Corosync,Pacemaker 搭建 Linux 高可用集群
    如何在 Linux 虚拟机上扩展根文件系统
    Linux 虚拟机中配置 GNOME + VNC
    在 Linux 中使用 Azure Premium 存储的基本优化指南
    如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
    如何解决 Linux 虚拟机磁盘设备名不一致的问题
    Java 调用 Rest api 设置经典 Linux 虚拟机的实例启停
    CentOS: 将虚拟机迁移到 Azure (以阿里云为例)
    Linux 虚拟机的计划维护
  • 原文地址:https://www.cnblogs.com/sydeveloper/p/2262004.html
Copyright © 2011-2022 走看看