• 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、 存储过程可被作为一种安全机制来充分利用

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

  • 相关阅读:
    metal的gpu query
    体积雾 global fog unity 及改进
    hdr rt format对颜色的影响
    unity deferred lighting
    unity linear space时 photoshop blend的正确设置
    unity linear work flow
    一些数据 bandwidth之类
    deferred rendering with msaa
    unity 显示mipmaplevel
    【转】在C#中使用SendMessage
  • 原文地址:https://www.cnblogs.com/for917157ever/p/2454670.html
Copyright © 2020-2023  润新知