博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL server存储过程,触发器,游标相关实例
阅读量:4619 次
发布时间:2019-06-09

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

1 use MySchool  2 go  3   4 alter proc P_stu  5 @pass int= 60  6 as  7     select AVG(StudentResult)as 平均分  8     from Result  9  10     select * from Result 11     where StudentResult< @pass 12     go 13  14      15     exec P_stu 16  17     go 18  19 ---创建带输出参数的存储过程 20  21 select * from Result 22 go  23  24 alter procedure p_res  25 @newId varchar(20) output 26 as 27     declare @max varchar(20) 28      29     select @max=MAX(StudentNo) from Result 30     where YEAR(ExamDate)  = YEAR(GETDATE()) 31     and month(ExamDate)  = month(GETDATE()) 32     and day(ExamDate)  = day(GETDATE()) 33  34     if (@max is null)  35     set @newId = CONVERT(varchar(100),GETDATE(),23)+'001' 36     else 37     begin  38         declare @right int 39         set @right = CONVERT(int,right(@max,3)) 40         set @right = @right +1 41         set @newId = CONVERT(varchar(100),GETDATE(),23)+'-'+(case when @right < 10 then '00' when @right<100 then '0' end)+ CONVERT(varchar(10),@right) 42  43     end 44     go 45  46     declare @rst varchar(20) 47     exec p_res  @rst output 48     print @rst  49      50  51     --动态存储过程的数据处理 52  53  54     --分页存储过程 55     --要求 56         --可输入每页显示条数,默认每页条 57         --可输入页码进行查询 58         --可输入条件查询 59         --可输入表名 60         --可输入列名 61         --可输入排序列 62         --返回总记录数 63         --返回总页数 64         --返回查询到的结果 65   select * from Subject 66   go  67  68   if exists(select * from sysobjects  69     where name = 'p_Mypage') 70     drop procedure p_Mypage 71     go 72  73   create proc p_Mypage 74   @tableName varchar(20), 75   @Fields varchar(200), 76   @orderFields varchar(200), 77   @where varchar(200), 78   @pageSize int = 5, 79   @pageIndex int = 1, 80   @RecordCount int output, 81   @PageCount int output 82  83   with encryption--文本加密 84   --with recomple--每次都重新编译 85   as 86  87     declare @sql nvarchar(4000) 88  89     set @sql = 'select @RecordCount=count(*) from'+ @tableName+'where 1= 1'+ISNULL(@where,' ') 90  91     exec sp_executesql @sql,N'@RecordCount int output',@RecordCount output 92     set @PageCount = ceiling((@RecordCount+0.0)/@pageSize)、 93      94     set @sql = ' 95     select * from( 96     select top  '+ CONVERT(varchar(10),@pageSize)+' '+@Fields+' from( 97     select top '+ CONVERT(varchar(10),@pageSize*@pageIndex)+' * from '+@tableName+' 98     where 1= 1'+ISNULL(@where,' ')+' 99     order by '+@orderFields+' )as a100     order by a.'+@orderFields+' desc) as b101     order by b.SubjectNo'102 103     exec (@sql)104 105 106     declare @a int ,@b int 107     exec p_Mypage @tableName= 'Subject',@Fields = '*',108         @orderFields = 'SubjectNo',@where=null,109         @pageSize = 5,@pageIndex = 2,@RecordCount = @a output,110         @PageCount = @b output111     print @a112     print @b113 114 115     --游标116     117 118 119 120  declare sur_stu cursor scroll for121  select StudentName from Student for read only122  open sur_stu123 124  declare @name varchar(20)125  declare @i int126  set @i = 1;127  fetch next from cur_stu into @name128  while(@@FETCH_STATUS<> -1)129  begin130     if(@i = 3)131     begin132         print @name133         set @i=0134         end135     fetch next from cur_stu into @name136     set @i=@i  +1137 138 end139 140 close sur_stu141 deallocate sur_stu142 143 144 --使用游标和查存储过程创建分页  性能最差145 create procedure sqlPage146 @sql nvarchar (4000),147 @pageIndex int,148 @pageSize int,149 @recordCount int output,150 @pageCount int output151 as 152     declare @p1 int 153     exec sp_cursoropen @p1 output,@sql,@scrollopt= 1, @ccopt = 1,@rowcount= @recordCount output154     set @pageCount = CEILING((@recordCount+0.0)/@pageSize)155     exec sp_cursorfetch @p1,16,@pageIndex,@pageSize156     exec sp_cursorclose @p1157 158 declare @a int ,@b int159 exec sqlPage 'select * from student',1,5,@a output,@b output160 print @a 161 print @b

 

转载于:https://www.cnblogs.com/Jason-365/p/8168990.html

你可能感兴趣的文章
[New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine
查看>>
GMM模型
查看>>
unity3d log管理
查看>>
scp与rsync限速
查看>>
实验2-1-5 将x的平方赋值给y
查看>>
利用spring boot+vue做的一个博客项目
查看>>
595. 大的国家
查看>>
【原创】JQWidgets-TreeGrid 1、快速入门
查看>>
高精度库(支持小数、负数、整数、判断质数、阶乘、孪生质数等)
查看>>
VMDNAMD命令规则(转载)
查看>>
noip2014 -- D1 -- 1
查看>>
独木桥(bridge)
查看>>
制作docker镜像
查看>>
第一阶段冲刺个人总结
查看>>
iOS - 静态类库 打包 C,C++文件及和OC混编
查看>>
版本号严格遵守semver语义化标准
查看>>
JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解
查看>>
BZOJ1977 [BeiJing2010组队]次小生成树 Tree
查看>>
Meta http-equiv属性详解(转)
查看>>
Git的初步学习
查看>>