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

    Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。

    存储过程相对于其他的数据库访问方法有以下的优点:

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

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

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

    (4)安全性。参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

    存储过程一共分为了三类:用户定义的存储过程、扩展存储过程以及系统存储过程。

    其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。

    Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,可以接受和返回用户提供的参数。

    CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。他们在.Net Framework程序集中是作为类的公共静态方法实现的。(本文就不作介绍了)

    创建存储过程的语句如下:

    以下为引用的内容:

    CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
        [ { @parameter [ type_schema_name. ] data_type } 
            [ VARYING ] [ = default ] [ [ OUT [ PUT ] 
        ] [ ,n ] 
    [ WITH <procedure_option> [ ,n ]
    [ FOR REPLICATION ] 
    AS { <sql_statement> [;][ n ] | <method_specifier> }
    [;]
    <procedure_option> ::= 
        [ ENCRYPTION ]
        [ RECOMPILE ]
        [ EXECUTE_AS_Clause ]

    <sql_statement> ::= 
    { [ BEGIN ] statements [ END ] }

    <method_specifier> ::=
    EXTERNAL NAME assembly_name.class_name.method_name

         [schema_name]: 代表的是存储过程所属的架构的名称

          例如:

                Create Schema yangyang8848      
                Go
                Create Proc yangyang8848.AllGoods
                As Select * From Master_Goods
                Go

                执行:Exec AllGoods 发生错误。

                执行:Exec yangyang8848.AllGoods 正确执行。

          [;Number]: 用于对同名过程进行分组的可选整数。使用一个 DROP PROCEDURE 语句可将这些分组过程一起删除。

          例如:

                Create Proc S1 ;1
                AS
                       Select * From Master_Goods
                Go
                Create Proc S1 ;2
                As 
                       Select * From Master_Location
                Go

    转载自:http://www.aspnetjia.com

  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/aspnetjia/p/5234022.html
Copyright © 2011-2022 走看看