详解SQLServer 存储过程

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

存储过程相对于其余的数据库访问方法有如下的优势:数据库

(1)重复使用。存储过程能够重复使用,从而能够减小数据库开发人员的工做量。编程

(2)提升性能。存储过程在建立的时候就进行了编译,未来使用的时候不用再从新编译。通常的SQL语句每执行一次就须要编译一次,因此使用存储过程提升了效率。安全

(3)减小网络流量。存储过程位于服务器上,调用的时候只须要传递存储过程的名称以及参数就能够了,所以下降了网络传输的数据量。服务器

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

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

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

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

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

建立存储过程的语句以下:

 

如下为引用的内容:

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

相关文章
相关标签/搜索