存储过程有点: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--返回的记录数