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存储过程,触发器,游标相关实例的更多相关文章

  1. SQL Server存储过程和游标有关实例以及相关网址

    内含游标的存储过程实例 第一种写法 GO BEGIN IF (object_id('PT_FAULT_REPORT', 'P') is not null) drop proc PT_FAULT_REP ...

  2. sql server 存储过程使用游标记录

    sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...

  3. Sql Server存储过程和游标的配合操作

    本段代码主要为了记录存储过程以及游标的使用,防止以后自己忘记 知识点:1.存储过程书写 2.游标书写 3.游标循环更新记录 create proc saletargetas declare @ower ...

  4. SQL Server 存储过程具体解释

    SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理 ...

  5. SQL Server基础之游标

    查询语句可能返回多条记录,如果数据量非常大,需要使用游标来逐条读取查询结果集中的记录.应用程序可以根据需要滚动或浏览其中的数据.本篇介绍游标的概念.分类.以及基本操作等内容. 一:认识游标   游标是 ...

  6. Microsoft SQL Server 存储过程

    Microsoft SQL Server 存储过程 TRIGGER DDL触发器:主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改:DDL事件是指对数据库CREATE,ALTER,DROP ...

  7. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  8. SQL Server 中的游标(cursor)

    http://www.cnblogs.com/Dlonghow/archive/2009/05/14/1456910.html 在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据 ...

  9. SQL Server 存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  10. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

随机推荐

  1. SQLServer之锁简介

    锁定义(Definition) 锁定是 DBMS 将访问限制为多用户环境中的行的过程. 以独占方式锁定行或列,不允许其他用户访问锁定的数据,直到锁被释放. 这可确保两个用户不能同时更新行中的同一列. ...

  2. 金蝶K3外购入库单单价取数规则调整

    涉及界面: 问题:财务抱怨外购入库单价格取错,单价多除了一次税率 例如,采购单里面注明了价格是不含税15.3256 结果在外购入库单里面,又自做主张除以税率17%,把采购成本搞成了13.0988, 咨 ...

  3. July 12th, 2018. Thursday, Week 28th.

    People love what other people are passionate about. 人总是会爱上别人倾注热情的事物. From La La Land. This quote has ...

  4. ThreadLocal<T>学习总结

    public class ThreadLocalTest { /** * @param * @Author: xdj * @Date: 2019/4/12 10:16 * @Description: ...

  5. vue源码分析—Vue.js 源码构建

    Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下.(Rollup 中文网和英文网) 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.j ...

  6. Visual Studio 2019 使用 Live Share

    一.前言 Visual Studio 2019 在今天发布(北京时间)了,这次带来了一个比较有趣的 Live Share 功能,使用它可以进行更好的协作开发.主要功能: 更多资料可看官方介绍: Vis ...

  7. Windows平台安装TensorFlow Q&A

    ·本文讲的是Windows平台使用原生pip进行TensorFlow(CPU版本)安装的注意事项及常见问题解决方法 ·这是TensorFlow官网的安装介绍:在 Windows 上安装 TensorF ...

  8. CentOS_7下安装PHP7.3

    安装mysql:https://www.cnblogs.com/jiangml/p/10402390.html 下载PHP安装包: 官网:http://www.php.net/downloads.ph ...

  9. [题解]邮递员寄信(luoguP1629)

    题目来源:luoguP1629 题目描述 有一个邮递员要送东西,邮局在结点1.他总共要送N-1样东西,其目的地分别是2-N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条 ...

  10. 【XSY3370】道路建设 最短路

    题目大意 有一个完全图,边有边权. 对于每个 \(i\),求一棵生成树,使得( \(\sum_{j=1,j\neq i}^n\) \(j\) 到 \(i\) 的路径上边权最小值) 最小. \(n\le ...