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

    当接触新事物时,脑海中就会出现这个词汇,“是什么”,“怎么做”,“怎么能更好

    存储过程是什么,它在关系数据库Sql Server 中 又充当一个什么角色?

    定义:百度一下我们不难知道,它是一组为完成特定功能的Sql 语句集,经编译后存储在数据库中,用户通过指定的存储过程的名称和参数来执行。

    第一个,“是什么”我们已经了解到,接下来我们说说第二个“怎么”。

    1 存储过程语法

    CREATE PROC|PROCEDURE PROC_name(存储过程的名称)
    @ProductID(变量名称)  INT(数据类型),
    @ProductName(变量名称) VARCHAR(100) (数据类型)
    ....
    AS
       SQL_statements(Sql 脚本,如 SELECT * FROM Product)

    2 创建不带参的存储过程

    CREATE PROCEDURE MyfirstPro
    AS
    SELECT * FROM Production.Product

    exec MyfirstPro --执行存储过程

    3 创建带参的存储过程

    CREATE PROCEDURE MyfirstPro
    @ProductID INT
    AS
    SELECT  COUNT(*)
    FROM
    Production.Product WHERE ProductID<@ProductID

    exec MyfirstPro --执行存储过程

    修改存储过程

    ALTER PROCEDURE MyfirstPro
    AS
    SELECT * FROM Production.Product  WHERE ProductId<1200  

    exec MyfirstPro --执行存储过程

    删除存储过程 

    DROP Proc MyfirstPro

    第二个,“怎么做”也告一段落,接下来是“怎么能更好”,能不能做好第三个,就能说明这个事物你认识是否透彻,当然这个已不是这里主点,想想做好它,那就得看你的Sql  语句集学的怎么样了。

    6 存储过程分页

    IF (OBJECT_ID('FenYe','p') IS NOT NULL )
     DROP PROCEDURE FenYe
    GO
    CREATE PROCEDURE FenYe
     @pageindex INT,
     @pagesize INT
    AS
     DECLARE @start INT,@end INT
     SET @start=(@pageindex-1)*@pagesize+1
     SET @end =@start+@pagesize-1

     SELECT *
      FROM(
       SELECT id
       ,username
       ,ROW_NUMBER() OVER (ORDER BY id) AS row
       FROM dbo.userinfo) AS u
      WHERE u.row BETWEEN @start AND @end
      
     --执行 
    EXEC FenYe
     @pageindex = 1, -- INT
     @pagesize = 2 -- INT

    执行结果如图:

    存储过程的优点

     A、 存储过程允许标准组件式编程

            存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。

            B、 存储过程能够实现较快的执行速度

            如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。

            C、 存储过程减轻网络流量

            对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。

            D、 存储过程可被作为一种安全机制来充分利用

            系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。

  • 相关阅读:
    MDX Step by Step 读书笔记(六) Building Complex Sets (复杂集合的处理) Filtering Sets
    在 Visual Studio 2012 开发 SSIS,SSAS,SSRS BI 项目
    微软BI 之SSIS 系列 在 SSIS 中读取 SharePoint List
    MDX Step by Step 读书笔记(五) Working with Expressions (MDX 表达式) Infinite Recursion 和 SOLVE_ORDER 原理解析
    MDX Step by Step 读书笔记(五) Working with Expressions (MDX 表达式)
    使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
    MDX Step by Step 读书笔记(四) Working with Sets (使用集合) Limiting Set and AutoExists
    SQL Server 2012 Analysis Services Tabular Model 读书笔记
    Microsoft SQL Server 2008 MDX Step by Step 学习笔记连载目录
    2011新的开始,介绍一下AgileEAS.NET平台在新的一年中的发展方向
  • 原文地址:https://www.cnblogs.com/for917157ever/p/2454670.html
Copyright © 2011-2022 走看看