zoukankan      html  css  js  c++  java
  • SqlServer之存储过程

    存储过程最主要的特色:是当写完一个存储过程后即被翻译成可执行码存储在系统表


    内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参
    数就可以得到所要的结果而不必再去编辑 T-SQL 命令。
    存储过程也可用在控制访问权限、为数据库表中的活动创建审计追踪、将关系到数据
    库及其所有相关应用程序的数据定义语句和数据操作语句分隔开。

    1.存储过程定义:
    存储过程是一种在数据库中存储复杂程序,以便在外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序;
    存储过程经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它。存储过程相比传统SQL语句执行方式(先编译,再执行)明显效率高。为了保证数据的完整性,提高执行重复任务的性能和一致性,常采
    用存储过程(Stored Procedure)。

    2.存储过程的优点:
    .减少了服务器/客户端网络流量
    .更强的安全性
    .代码的复用性
    .更容易维护
    3.存储过程的类型:

    1、系统存储过程:以“sp_”为前缀标识,存储在“master”数据库中,提供对系统表的检索和管理功能。
    2、扩展存储过程:以“xp_”为前缀标识,通过执行外部DLL来实现功能。
    3、用户定义存储过程:创建在用户数据库中。
    4. 临时存储过程:本地临时过程的名称以单个数字符号 (#) 开头;它们仅对当前的用户连接是可见的;它们仅对当前的用户连接是可见的;
    当用户关闭连接时被删除。全局临时过程的名称以两个数字符号 (##)开头,创建后对任何用户都是可见的,并且在使用该过程的最后一个会话结束时被删除。

    二.

    常用系统存储过程有:
    exec sp_databases; --查看数据库
    exec sp_tables; --查看表
    exec sp_columns student;--查看列
    exec sp_helpIndex student;--查看索引
    exec sp_helpConstraint student;--约束
    exec sp_stored_procedures;
    exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
    exec sp_rename student, stuInfo;--修改表、索引、列的名称
    exec sp_renamedb myTempDB, myDB;--更改数据库名称
    exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
    exec sp_helpdb;--数据库帮助,查询数据库信息
    exec sp_helpdb master;
    存储过程基本语法:
    --------------创建存储过程-----------------
    
    CREATE PROC [ EDURE ] procedure_name [ ; number ]
        [ { @parameter data_type }
            [ VARYING ] [ = default ] [ OUTPUT ]
        ] [ ,...n ]
    
    [ WITH
        { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
    
    [ FOR REPLICATION ]
    
    AS sql_statement [ ...n ]
    
    --------------调用存储过程-----------------
    
    EXECUTE Procedure_name '' --存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value
    
    --------------删除存储过程-----------------
    
    drop procedure procedure_name    --在存储过程中能调用另外一个存储过程,而不能删除另外一个存储过程
    1,参数分为输入参数,输出参数;参数都是可选的,输入参数允许默认值。
    示例:
    一个简单的存储过程:
    CREATE PROCEDURE COURSEINFO
    @Cno varchar(20),
    @Cname varchar(20)
    
    
    AS
    BEGIN
    select * from COURSE where CNO=@Cno and CNAME=@Cname
    END
    GO

    如果用sql直接查询,是这样的:

    select * from COURSE where CNAME='计算机导论'

    查询结果:

    用存储过程查询,则是这样的:

    exec COURSEINFO 计算机导论,计算机导论
     

    或这样:

    EXEC COURSEINFO @Cno='3-105',@Cname='计算机导论'

    查询结果:

    
    

     参考资料:

    SQL存储过程入门http://www.cnblogs.com/lideng/archive/2013/04/11/3013966.html

    SQL Server存储过程http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

    存储过程与触发器 :http://read.pudn.com/downloads152/ebook/661195/ch09.pdf

    在 ADO.NET 中使用存储过程http://116.252.173.100:16000/dotnetweb/dotnetjpkchtml/jxnr/asp/10.pdf

    实现存储过程http://read.pudn.com/downloads115/ebook/485961/229/%E7%AC%AC%E5%85%AB%E7%AB%A0%20%E5%AE%9E%E7%8E%B0%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B.pdf

  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/code-charmer/p/4065968.html
Copyright © 2011-2022 走看看