SQL server存储过程,触发器,游标相关实例
use MySchool
go alter proc P_stu
@pass int= 60
as
select AVG(StudentResult)as 平均分
from Result select * from Result
where StudentResult< @pass
go exec P_stu go ---创建带输出参数的存储过程 select * from Result
go alter procedure p_res
@newId varchar(20) output
as
declare @max varchar(20) select @max=MAX(StudentNo) from Result
where YEAR(ExamDate) = YEAR(GETDATE())
and month(ExamDate) = month(GETDATE())
and day(ExamDate) = day(GETDATE()) if (@max is null)
set @newId = CONVERT(varchar(100),GETDATE(),23)+''
else
begin
declare @right int
set @right = CONVERT(int,right(@max,3))
set @right = @right +1
set @newId = CONVERT(varchar(100),GETDATE(),23)+'-'+(case when @right < 10 then '' when @right<100 then '' end)+ CONVERT(varchar(10),@right) end
go declare @rst varchar(20)
exec p_res @rst output
print @rst --动态存储过程的数据处理 --分页存储过程
--要求
--可输入每页显示条数,默认每页条
--可输入页码进行查询
--可输入条件查询
--可输入表名
--可输入列名
--可输入排序列
--返回总记录数
--返回总页数
--返回查询到的结果
select * from Subject
go if exists(select * from sysobjects
where name = 'p_Mypage')
drop procedure p_Mypage
go create proc p_Mypage
@tableName varchar(20),
@Fields varchar(200),
@orderFields varchar(200),
@where varchar(200),
@pageSize int = 5,
@pageIndex int = 1,
@RecordCount int output,
@PageCount int output with encryption--文本加密
--with recomple--每次都重新编译
as declare @sql nvarchar(4000) set @sql = 'select @RecordCount=count(*) from'+ @tableName+'where 1= 1'+ISNULL(@where,' ') exec sp_executesql @sql,N'@RecordCount int output',@RecordCount output
set @PageCount = ceiling((@RecordCount+0.0)/@pageSize)、 set @sql = '
select * from(
select top '+ CONVERT(varchar(10),@pageSize)+' '+@Fields+' from(
select top '+ CONVERT(varchar(10),@pageSize*@pageIndex)+' * from '+@tableName+'
where 1= 1'+ISNULL(@where,' ')+'
order by '+@orderFields+' )as a
order by a.'+@orderFields+' desc) as b
order by b.SubjectNo' exec (@sql) declare @a int ,@b int
exec p_Mypage @tableName= 'Subject',@Fields = '*',
@orderFields = 'SubjectNo',@where=null,
@pageSize = 5,@pageIndex = 2,@RecordCount = @a output,
@PageCount = @b output
print @a
print @b --游标 declare sur_stu cursor scroll for
select StudentName from Student for read only
open sur_stu declare @name varchar(20)
declare @i int
set @i = 1;
fetch next from cur_stu into @name
while(@@FETCH_STATUS<> -1)
begin
if(@i = 3)
begin
print @name
set @i=0
end
fetch next from cur_stu into @name
set @i=@i +1 end close sur_stu
deallocate sur_stu --使用游标和查存储过程创建分页 性能最差
create procedure sqlPage
@sql nvarchar (4000),
@pageIndex int,
@pageSize int,
@recordCount int output,
@pageCount int output
as
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt= 1, @ccopt = 1,@rowcount= @recordCount output
set @pageCount = CEILING((@recordCount+0.0)/@pageSize)
exec sp_cursorfetch @p1,16,@pageIndex,@pageSize
exec sp_cursorclose @p1 declare @a int ,@b int
exec sqlPage 'select * from student',1,5,@a output,@b output
print @a
print @b
SQL server存储过程,触发器,游标相关实例的更多相关文章
- SQL Server存储过程和游标有关实例以及相关网址
内含游标的存储过程实例 第一种写法 GO BEGIN IF (object_id('PT_FAULT_REPORT', 'P') is not null) drop proc PT_FAULT_REP ...
- sql server 存储过程使用游标记录
sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...
- Sql Server存储过程和游标的配合操作
本段代码主要为了记录存储过程以及游标的使用,防止以后自己忘记 知识点:1.存储过程书写 2.游标书写 3.游标循环更新记录 create proc saletargetas declare @ower ...
- SQL Server 存储过程具体解释
SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理 ...
- SQL Server基础之游标
查询语句可能返回多条记录,如果数据量非常大,需要使用游标来逐条读取查询结果集中的记录.应用程序可以根据需要滚动或浏览其中的数据.本篇介绍游标的概念.分类.以及基本操作等内容. 一:认识游标 游标是 ...
- Microsoft SQL Server 存储过程
Microsoft SQL Server 存储过程 TRIGGER DDL触发器:主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改:DDL事件是指对数据库CREATE,ALTER,DROP ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server 中的游标(cursor)
http://www.cnblogs.com/Dlonghow/archive/2009/05/14/1456910.html 在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据 ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- (摘录)SQL Server 存储过程
文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...
随机推荐
- Linux学习历程——Centos 7 账户管理命令(用户组篇)groupadd groupmod groupdel
一.命令介绍 groupadd:创建用户组 groupmod:修改用户组属性 groupdel:删除用户组 ---------------------------------------------- ...
- 运算符和Scanner的使用
一 1.运算符:对常量或者变量进行操作的符号 2.算术运算符: 1)四则运算:+ - * / 2)取模运算:%(只看余数) 3)字符串连接:任何数据类型和字符串连在一起,都是字符串结果(+来连接) 4 ...
- 英语-TOEFL和GRE复习计划与资料
目录 一. TOEFL (1). 阅读: 60 minutes (2). 听力: 50 minutes (3). 口语: 20 minutes (4). 作文: 60 minutes 单词准备 其他资 ...
- LVM 磁盘分区扩容
前提:将磁盘中未分区磁盘进行分区操作 https://www.cnblogs.com/guoxiangyue/p/10033367.html 然后进行vg扩容 pvcreate /dev/sdc lv ...
- html页面打开ie浏览器默认打开最高版本
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
- 毕业设计(1)基于MicroPython的大棚监测控制系统的程序设计与模型设计
智慧农业就是将物联网技术运用到传统农业中去,运用传感器和软件通过移动平台或者电脑平台对农业生产进行控制,使传统农业更具有“智慧”.除了精准感知.控制与决策管理外,从广泛意义上讲,智慧农业还包括农业电子 ...
- 手写token解析器、语法解析器、LLVM IR生成器(GO语言)
最近开始尝试用go写点东西,正好在看LLVM的资料,就写了点相关的内容 - 前端解析器+中间代码生成(本地代码的汇编.执行则靠LLVM工具链完成) https://github.com/daibinh ...
- python中可变与不可变类型变量中一些较难理解的地方
当函数内部引用一个全局变量时,如果此全局变量为可变类型,那么函数内部是可以改变此全局变量的值,用不用globale申明全局变量都一样.但是如果想给此变量重新赋值则必须要使用global. l = [] ...
- Java数据库学习之分页查询
分页查询 limit [start],[rows] 思路: pram start 从哪一行开始 关键是从哪一行开始,需要根据查询的页数来进行换算出查询具体页数是从哪一行开始 start = (pag ...
- python nympy 序列化dict
首先定义dict dict={} 对象写到dict dict['key']=object 存储dict np.save('dictname.npy',dict) 读取dict dictname=np. ...