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

    在SQL-Server中,存储过程是一组T-SQL命令集合,可视为存储在数据库中的一段子程序,用户通过指定存储过程的名字和参数来执行它。T-SQL是标准SQL的扩展,不仅结合了SQL的数据操作能力,而且具备了过程化语言的流

    一. 创建存储过程语法

    复制代码
    CREATE PROCEDURE proc_name
    [{@paramter_name}{type} [ = default_value ] [OUTPUT] ]
    [{ WITH [ RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION ]}]
    AS
    
    BEGIN
        statements
    END
    复制代码

      1. 命名存储过程

      CREATE PROCEDURE proc_name

      对于自己来讲,我比较倾向于使用小写字母配合下划线的方式命名存储过程,因为对于T-SQL关键字全部使用大写表示,这样就可以形成良好的区分度,使整个结构更加清晰,可读性更高。存储过程的命名应该能表达这个存储过程能做什么,针对那些表,对于团队来说,最好能制定出一套命名规范,并坚持使用下来,这样即使存储过程的数量级很大的时候,也可以有良好的组织性。应该避免的一种情况是使用sp_前缀命名存储过程,因为SQL-Server的系统存储过程就是以sp_开头的,这样你自己编写的存储过程可能和系统存储过程出现冲突,带来额外的麻烦。

      2.参数的使用

      {@parameter_name} {type} [=default_value] [OUTPUT]

      存储过程在执行的时候可以通过传入参数的方法提供信息,这有点类似于函数的参数功能,当然参数只是可选的,可以使用N个参数,或者一个参数也不使用。当使用多个参数的时候,中间应该用逗号分隔开来。

      参数的命名必须使用@作为前缀,同时必须声明数据类型。参数的命名推荐使用小写字母配合下划线的方式。也可以给参数赋值一个默认值,不过这只是可选的,同样,参数也可以指定为输出参数,输出参数即可以用来传入值,也可以用来传出值,它使用OUTPUT关键字表示。

    CREATE PROCEDURE proc_book_add
    (
        --不带默认值的参数   
        @book_name NVARCHAR(20),
        --带默认值的参数
        @book_able BIT = 1,
        --输出参数
        @book_id INT OUTPUT
    )
    AS

      3.存储过程附加指令

          WITH { RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION }

      RECOMPILE指示SQL-Server在每次运行存储过程的时候都重新编译整个过程。在之前的存储过程运行流程图中可以看到,存储过程会重用首次编译的计划,加上这个指令后,存储过程将不遵循这个原则。通常这个指令是与数据库执行优化有关,有兴趣的读者可以google一下。

      ENCRYPTION指示对存储过程进行加密,保护源代码不被窥视和修改。

    程控制能力。

      1.执行存储过程

      { EXECUTE | EXEC} proc_name [@pram=value [OUTPUT]] 

         exec 存储过程的名字

      在带参数的情况下,优先使用@parameter=value的形式。如果参数有默认值,并且传入的也是默认值,则可以省略参数;如果参数是一个输出参数,则需要携带OUTPUT关键字。

      2.删除存储过程

      DROP PROCEDURE proc_name

  • 相关阅读:
    转C++的一点点
    无向图hash
    字符串相关
    Tutte矩阵求一般图最大匹配
    FFT的常数优化
    洲阁筛
    半平面交
    非旋treap套线段树
    点分治 [IOI2011]Race
    treap
  • 原文地址:https://www.cnblogs.com/lj940306/p/4021920.html
Copyright © 2011-2022 走看看