博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储过程
阅读量:4980 次
发布时间:2019-06-12

本文共 2457 字,大约阅读时间需要 8 分钟。

定义:存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。

    通俗地说,存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
    存储过程的优点:
        1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
        2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
        3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
        4.允许标准组件式编程。存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
    创建存储过程:

1  CREATE PROCEDURE procedure_name2     [WITH ENCRYPTION]3     [WITH RECOMRILE]4     AS5     sql_statement

    注:
    WITH ENCRYPTION: 对存储过程进行加密
    WITH RECOMPILE: 对存储过程重新编译
    执行存储过程:  

1 EXEC procedure_name

 

    -------------------------------------------------------------------------------------------------------------
    带参数的存储过程:想存储过程设定输入、输出参数的主要目的是通过参数向存储过程输入和输出信息来扩展存储存储过程的功能。
                        通过设定参数,可以多次使用同一存储过程并按用户要求查找所需要的结果。
    1.带输入参数的存储过程:

1  CREATE PROCEDURE procedure_name2     @parameter_name datatype=[default]3     [WITH ENCRYPTION]4     [WITH RECOMPILE]5     AS6     sql_statement

   

    注:
    @parameter_name 存储过程的参数名,必须以@为前缀
    Datatype 参数的数据类型
    Default 参数的默认值,如果执行存储过程时为提供该参数的变量值,则使用default值。
    
    范例:

1 CREATE PROCEDURE p_book1p2     @出版社 varchar(20)3     AS4     SELECT * FROM book15     WHERE 出版社= @ 出版社

    

    执行存储过程,使用参数名传递参数值 

1  EXEC Procedure_name2     [@parameter_name = value]3     [,...n]

    例 用参数名传递参数值的方法执行存储过程p_book1p,分别查询出版社为“中国长安”和“安徽人民”书的记录
    EXEC p_book1p @出版社='中国长安'
    EXEC p_book1p @出版社='安徽人民'
    按位置传递参数值:在执行存储过程的语句中,不通过参数传递参数值而直接给出参数的传递值。当存储过程含有多个输入参数时,传递值的顺序必须以存储过程中定义的输入顺序相一致。
                        安位置传递参数时,也可以忽略空值和具有默认值的参数,但不能因此破坏输入参数的设定顺序。

1  EXEC parameter_name2     [value1,value2,...]

 

    2.带输出参数的存储过程
        如果需要从存储过程中返回一个或多个值,可以通过在创建存储过程的语句中定义输出参数来是想,为了使用输出参数,需要在CREATE PROCEDURE 语句中指定OUTPUT关键字。
    输出参数语法如下:
    @parameter_name datatype = [default] OUTPUT
    例:创建存储过程p_book1Num,要求能根据用户给定的出版社,统计出该出版社的出书数量,并将数量以输出变量的形式返回给用户。

1  CREATE PROCEDURE P_book1Num2     @出版社 VARCHAR(20), @book1Num smallint output3     AS4     SET @book1Num =5     (6     SELECT COUNT(*) FROM book17     WHERE 出版社=@出版社8     )9     PRINT @book1Num  

    执行存储过程p_book1Num 

1  DECLARE @出版社 VARCHAR(20), @book1Num SMALLINT2     SET @出版社='中国长安'3     EXEC p_book1Num @出版社,@book1Num

    系统存储过程:
    sp_tables --*返回可在当前环境中查询的对象列表。也就是说,返回任何能够在FROM 子句中出现的对象(不包括同义词对象)。
    sp_stored_procedures --*返回当前环境中的存储过程列表。
    sp_rename --*在当前数据库中更改用户创建对象的名称。
    sp_renamedb --更改数据库的名称(后续版本将删除该功能)。
    sp_columns -- 返回当前环境中可查询的指定表或视图的列信息。

转载于:https://www.cnblogs.com/ivy-xu/p/5716262.html

你可能感兴趣的文章
css选择器
查看>>
ASP.NET上传下载文件
查看>>
Galaxy Nexus 全屏显示-隐藏Navigation Bar
查看>>
Spring中使用Velocity模板
查看>>
上周热点回顾(8.18-8.24)
查看>>
Feature toggle
查看>>
day02
查看>>
gvim 配置Pydiction
查看>>
Linux安装指定mysql版本
查看>>
分布式锁的三种实现方式
查看>>
poj 2109 pow函数也能这么用?p的开n次方
查看>>
Oracle database link
查看>>
python调用shell小技巧
查看>>
TL431的几种常用用法
查看>>
js 经典闭包题目详解
查看>>
在项目中移除CocoaPods
查看>>
【洛谷】CYJian的水题大赛【第二弹】解题报告
查看>>
POJ 1703 Find them, Catch them【种类/带权并查集+判断两元素是否在同一集合/不同集合/无法确定+类似食物链】...
查看>>
L1-5. A除以B【一种输出格式错了,务必看清楚输入输出】
查看>>
Git一分钟系列--快速安装git客户端
查看>>