• 存储过程详解


    存储过程有点:1.节约网络传输流量。2.执行速度快(预编译)。

    存储过程缺点:1.不够灵活。

    标签:

    1.系统存储过程

    2 分离数据库

    3 附加数据库

    4 创建存储过程

    5 分页存储过程

    代码如下:

     1 ----------------存储过程----------------------------------
     2 
     3 --存储过程---就像数据库中运行方法(函数)
     4 
     5 --1.系统存储过程--------------------------------------------------------------------------------------
     6 
     7 EXEC sp_databases  --查看所有的数据库
     8 EXEC sp_tables   --查看当前数据库中的所有表(包括表的一些信息)
     9 EXEC sp_stored_procedures   --查看当前数据库中的所有存储过程
    10 
    11 ---2 分离数据库(要分离的数据库不能是可用数据库)--------------------------------------------------------
    12 exec sp_detach_db DemoTest
    13 
    14 --3 附加数据库-------------------------------------------------------------------------------------
    15 exec sp_attach_db @dbname='DemoTest'
    16 ,@filename1='C:Program FilesMicrosoft SQL ServerMSSQL.3MSSQLDataDemoTest.mdf'
    17 ,@filename2='C:Program FilesMicrosoft SQL ServerMSSQL.3MSSQLDataDemoTest_log.ldf'
    18 
    19 --4 创建存储过程--------------------------------------------------------------------------------------
    20 
    21 --4.1 带输入参数和输出参数的存储过程(向表插入一条数据并返回插入数据的ID)----
    22 
    23 --切换数据库
    24 use DemoTest
    25 go
    26 
    27 --如果存储过程存在则删除
    28 if exists(select * from sys.objects where name='usp_InsertUser')
    29 drop procedure usp_InsertUser
    30 go
    31 
    32 --创建存储过程
    33 
    34 create proc usp_InsertUser
    35 @Name nvarchar(16),
    36 @Age int,
    37 @Email varchar(32),
    38 @ID INT OUTPUT ---输出型参数
    39 as 
    40     declare @ReturnID INT  --内部变量
    41     insert into T_UserInfo values(@Name,@Age,@Email)
    42     select @ID= @@identity
    43 
    44 --执行存储过程
    45 declare @ID INT
    46 execute usp_InsertUser 'jack',33,'dgdsg@qq.com',@ID OUTPUT
    47 select @ID ---取得返回值
    48 
    49 
    50 --4.2 分页存储过程的创建
    51 use DemoTest
    52 go
    53 if exists(select * from sys.objects where name='usp_GetPageData')
    54 drop procedure usp_GetPageData
    55 go
    56 create proc usp_GetPageData
    57 @PageIndex int=1,---输入型参数,当前要显示的页码 默认值为1
    58 @PageSize  int=10,----输入型参数,每页显示的记录数目
    59 @PageCount int output ----输出型参数 总共的页码数目
    60 as
    61     declare @RowsCount int
    62     select * from
    63     (
    64      select row_number()over(order by id desc) rowNum,* from T_UserInfo
    65     ) t
    66     where t.rowNum between @pageSize*@pageIndex-@pageSize+1 and @pageSize*@pageIndex
    67     order by id desc
    68 
    69      ---求总共有多少页
    70     select @RowsCount=count(*) from T_UserInfo    
    71     set @pageCount=ceiling((@RowsCount/convert(float,@pageSize))) --select ceiling(7/3.0)
    72 
    73 
    74 ---执行存储过程
    75 declare @PageCount int
    76 execute usp_GetPageData 1,20,@PageCount output
    77 
    78 select @PageCount--返回的记录数
    作者:梦亦晓,转载请注明出处
    如果此文能给您提供帮助,请点击右下角的【推荐
    如果您对此文有不同的见解或者意见,欢迎留言讨论
  • 相关阅读:
    JavaEE——Struts(1)--Filter作为MVC的控制器 配置Struts2环境
    折叠菜单--实现左边目录,右边显示
    转载--竖向折叠菜单
    pest错误笔记
    JavaWeb--JQuery中的$(function())
    codeforces 440C. One-Based Arithmetic 解题报告
    codeforces 399B. Red and Blue Balls 解题报告
    codeforces 445B. DZY Loves Chemistry 解题报告
    2013级新生程序设计基础竞赛-正式赛 F 异或最大值 解题报告
    codeforces 441C. Valera and Tubes 解题报告
  • 原文地址:https://www.cnblogs.com/eggTwo/p/3447452.html
Copyright © 2020-2023  润新知