当前位置:Gxlcms > 数据库问题 > SQL server存储过程,触发器,游标相关实例

SQL server存储过程,触发器,游标相关实例

时间:2021-07-01 10:21:17 帮助过:4人阅读

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 a 100 order by a.+@orderFields+ desc) as b 101 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 output 111 print @a 112 print @b 113 114 115 --游标 116 117 118 119 120 declare sur_stu cursor scroll for 121 select StudentName from Student for read only 122 open sur_stu 123 124 declare @name varchar(20) 125 declare @i int 126 set @i = 1; 127 fetch next from cur_stu into @name 128 while(@@FETCH_STATUS<> -1) 129 begin 130 if(@i = 3) 131 begin 132 print @name 133 set @i=0 134 end 135 fetch next from cur_stu into @name 136 set @i=@i +1 137 138 end 139 140 close sur_stu 141 deallocate sur_stu 142 143 144 --使用游标和查存储过程创建分页 性能最差 145 create procedure sqlPage 146 @sql nvarchar (4000), 147 @pageIndex int, 148 @pageSize int, 149 @recordCount int output, 150 @pageCount int output 151 as 152 declare @p1 int 153 exec sp_cursoropen @p1 output,@sql,@scrollopt= 1, @ccopt = 1,@rowcount= @recordCount output 154 set @pageCount = CEILING((@recordCount+0.0)/@pageSize) 155 exec sp_cursorfetch @p1,16,@pageIndex,@pageSize 156 exec sp_cursorclose @p1 157 158 declare @a int ,@b int 159 exec sqlPage select * from student,1,5,@a output,@b output 160 print @a 161 print @b

 

SQL server存储过程,触发器,游标相关实例

标签:case   mys   bsp   read   lin   表名   roc   文本   加密   

人气教程排行