• SQLSERVER 中的存储过程


    SQLSERVER 中的存储过程

             Transact-SQL中的存储过程,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。

    这样就可以提高存储过程的性能。存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。

    存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。

    由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信

    息,所以在一定程度上也可以减少网络流量、简单网络负担。

     存储过程的优点:

      1.存储过程允许标准组件式编程

      2.存储过程能够实现较快的执行速度

      3. 存储过程减轻网络流量     

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

    常用系统存储过程  

    --常用系统存储过程呢;
    
     EXEC sp_databases       --查看系统中所有的数据库
     
     EXEC sp_tables          --查看当前数据库中表
     
     EXEC sp_columns 'INFO'  --查看某个表(info) 中列的情况
     
     EXEC sp_helpindex 'INFO' --表中索引
     
     EXEC sp_helpconstraint 'INFO' --表中约束
     
     EXEC sp_stored_procedures     --存储过程
     
     EXEC sp_helptext ''         --查看存储过程 或 函数 游标 触发器 的定义语句
     
     EXEC sp_rename 'STUDENT.NAME','STUNAME'  --修改字段,表,索引名
     /*

        SP_HELPINDEX 'INFO'

        SP_RENAME 'INFO.CLU_ID','INFO_CLU_ID','INDEX'


    */ EXEC SP_RENAMEDB 'TEST','NEW_TEST' --修改数据库名称 EXEC sp_helpdb TEST --查看数据库的一些信息

    基本语法格式:

    --SQL Server Stored Procedure Syntax
    CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] 
        [ { @parameter [ type_schema_name. ] data_type }
            [ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY]
        ] [ ,...n ] 
    [ WITH <procedure_option> [ ,...n ] ]
    [ FOR REPLICATION ] 
    AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
    [;]
    
    <procedure_option> ::= 
        [ ENCRYPTION ]
        [ RECOMPILE ]
        [ EXECUTE AS Clause ]

    --WITH RECOMPILE 不缓存
    --
    --加密WITH ENCRYPTION 
     

    存储过程的返回值(return 和 output)

               如果是select语句,则返回结果集,如果使用return 那么只能返回int 类型数据

    用输出参数output可以输出任意类型的结果(不包括表类型),而return只能返回整型并且总能返回一个整型值。一般的return用来终止存储过程的进行并返回。

    普通存储过程

     CREATE PROC PROC_GETINFO
       AS
        BEGIN
              SELECT *  FROM INFO
        END

    带输入参数存储过程

    CREATE PROC PROC_GETINFO( 
       @ID INT 
       )
       AS
        BEGIN
              SELECT *  FROM INFO WHERE ID=@ID
        END
    --调用:
    PROC_GETINFO 2

    带输出参数存储过程

       CREATE PROC PROC_GETINFO( 
       @ID INT,
       @CONTENT VARCHAR(100) OUT  --OUT    表示输出
                                  --OUTPUT 表示输入输出
       )
       AS
        BEGIN
              SELECT @CONTENT=CONTENT  FROM INFO WHERE ID=@ID
        END
    --调用:
    DECLARE @RESULT VARCHAR(100)
    EXEC PROC_GETINFO 2,@RESULT OUT
    PRINT @RESULT

    ADO.NET 调用带输出参数的存储过程

  • 相关阅读:
    【BZOJ 3282】Tree Link Cut Tree模板题
    【BZOJ 2002】【Hnoi 2010】弹飞绵羊 分块||Link Cut Tree 两种方法
    【BZOJ 1507】【NOI 2003】&【Tyvj P2388】Editor 块状链表模板题
    小结-Splay
    【BZOJ 3545】【ONTAK 2010】Peaks & 【BZOJ 3551】【ONTAK 2010】Peaks加强版 Kruskal重构树
    【BZOJ 3732】 Network Kruskal重构树+倍增LCA
    【BZOJ 3674】可持久化并查集加强版&【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
    【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题
    1020: [SHOI2008]安全的航线flight
    POJ
  • 原文地址:https://www.cnblogs.com/mc67/p/4825369.html
Copyright © 2020-2023  润新知