存储过程,触发器,分页练习
-------------------------------------游标和循环--------------------------------
DECLARE CATEGORY_CUR SCROLL CURSOR For SELECT*FROM dbo.Categories FOR UPDATE OF CategoryName OPEN CATEGORY_CUR GO
UPDATE Categories SET CategoryName='家电' where CURRENT OF CATEGORY_CUR SELECT*FROM Categories DECLARE @VAR INT SET @VAR=0 WHILE @VAR<100000 BEGIN INSERT INTO dbo.Categories VALUES('测试数据') SET @VAR=@VAR+1 END SELECT Count(*)FROM dbo.Products delete from dbo.Categories exec sp_helpdb
------------------------------------存储过程以及分页----------------------------
create procedure prSelctCategories AS BEGIN SELECT*FROM Categories END
EXECUTE prSelctCategories
Create Procedure prSelct @id int as select*from Categories where CategoryID=@id
execute prSelct 2763993
create procedure pr @id int, @name varchar(20) as Select*from Categories where CategoryID=@id and CategoryName=@name
execute pr 2763993,'测试数据'
GO
create procedure rp @id int, @content varchar(20) output as select @content= CategoryName from Categories where CategoryID=@id
GO
DECLARE @content varchar(20) execute rp 2763993,@content output PRINT @content
DECLARE @PRODEUCTNAME VARCHAR(20),@CATEGORYID INT,@PRUDUCTNUM INT,@VAR INT SET @VAR=0 SET @CATEGORYID=2763985 WHILE @VAR<10000 BEGIN INSERT INTO Products VALUES('洗衣粉',@CATEGORYID,@VAR,DEFAULT,DEFAULT) SET @VAR=@VAR+1 END
select*from Products delete from Products GO
create procedure sp_proPage @pageindex int=1, @pagesize int=10 as select top(@pagesize)*from products where productID not in( select top ((@pageindex-1)*@pagesize) productID from Products order by ProductID)
GO execute sp_proPage 3,5000
Go
Create procedure proc_Page @pageIndex int, --当前页 @pageSize int, --每页多少条数据 @pageCount int output --总共多少页 as declare @firstIndex int --firstIndex开始 declare @lastIndex int --lastIndex结束 declare @total int set @firstIndex=(@pageIndex-1)*@pageSize+1 set @lastIndex=@pageSize*@pageIndex select @total=COUNT(*)from Products if(@total%@pageSize<>0) begin set @pageCount=@total/@pageSize+1 end else begin set @pageCount=@total/@pageSize end --先对主键进行排序,然后用ROW_NUMBER进行编号 select*from (select ROW_NUMBER()over(order by ProductID)as PID,* from Products)as PTB where PID between @firstIndex and @lastIndex
declare @pageCount int execute proc_Page 1,10,@pageCount output print @pageCount
--------------------------------------事务的使用--------------------------------------
create table Bank ( ID INT NOT NULL PRIMARY KEY, MONERYS MONEY ) INSERT INTO Bank VALUES(1,'2000') INSERT INTO Bank VALUES(2,'5000') GO CREATE PROCEDURE PROC_MON @TOID int, @FROMID INT, @MONEYS MONEY AS SET XACT_ABORT on BEGIN TRAN DECLARE @Counterror int=0 UPDATE Bank SET MONERYS=MONERYS-@MONEYS WHERE ID=@FROMID --转账账户减去金额 set @Counterror=@Counterror+@@ERROR UPDATE Bank SET MONERYS=MONERYS+@MONEYS WHERE ID=@TOID --转账账户加上金额 set @Counterror=@Counterror+@@ERROR IF @Counterror<>0 --判断是否出现错误 begin rollback tran --如果有错开始回滚 RETURN 0 END else --如果没有错误 begin commit tran --执行事务 RETURN 1 END GO execute PROC_MON 1,2,2000 select*from bank
-----------------------------------------------------触发器操作-------------------------------------------- ----
DML触发器:DML事件即指在表或视图中修改数据的insert、update、delete语句。 ----DDL触发器: DDL事件即指在表或索引中的create、alter、drop语句也。 GO create trigger BankUpdateTrigger on Bank for update as print'the table was updated!'
Update Bank set MONERYS=5 where ID=1
select*from Bank
execute sp_helptext BankUpdateTrigger --查看触发器内容 select * from sysobjects where xtype='TR' --产看数据库多少触发器 disable trigger BankUpdateTrigger on Bank --禁用触发器 enable trigger BankUpdateTrigger on Bank --开启触发器 GO Alter trigger BankUpdateTrigger on Bank for update as if exists(select*from Bank where monerys=5) rollback --触发器回滚,保持数据完整性
----------------------------------操作日志表----------------------------------------------------------
create table reapterLog ( LogID INT IDENTITY(1,1)PRIMARY KEY NOT NULL, )
转载于:https://www.cnblogs.com/jasonyang/archive/2013/05/22/3093233.html
存储过程,触发器,分页练习相关推荐
- 三层架构+ajax分页实例,ASP.NET存储过程实现分页效果(三层架构)
本文实例为大家分享了ASP.NET存储过程实现分页的具体代码,供大家参考,具体内容如下 实现效果: 文本框内输入跳转的页数,点击GO会跳转到该页 首先在项目下加入BLL,DAL,DataAccess, ...
- mysql视图存储过程触发器
以下笔记借鉴于黑马MYSQL视频,记录为个人学习笔记参考. 包含视图/存储过程/触发器等概念 目录 视图 view 语法 视图的检查选项 视图更新 作用 存储过程 procedure 语法 变量 系统 ...
- c语言怎么定义存储过程输出的游标,存储过程触发器和游标.ppt
存储过程触发器和游标.ppt 数据库原理与应用教程―SQL Server 第11章存储过程.触发器和游标 引言 在SQL Server 2005应用操作中,存储过程.触发器和游标都扮演着相当重要的角色 ...
- MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...
- SQL Server 存储过程的分页方案比拼
建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) ...
- SQL Server 存储过程的分页
Code --建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar ...
- 存储过程DataGrid分页及注意点
sqlserver中的存储过程完整代码 /***************************************************************** * 存储过程名: GetC ...
- 使用存储过程创建分页
在实际的开发过程中,经常遇到存储过程分页,下面根据实际情况总结的几种方法: 数据库名称:myTest 1.思路:利用select top and select not in 排除例外情况的分页 use ...
- oralce用存储过程实现分页 以及 用java调用这个存储过程的代码
1 PL SQL 创建一个包 2 PL SQL 存储过程分页第一张图 3 PL SQL 存储过程分页第二张图 4 java 调用存储过程第一张图 5 java 调用存储过程 第二张图
- EF调用存储过程实现分页
1.通用分页代码 public static List<T> SelectPageList<T>(string sqlstr, int pageIndex, int pages ...
最新文章
- jQuery学习入门总结之css()和addClass()的不同
- 数字证书KeyTool使用(第二篇)
- Object-c基础之一:#import,NSLog(),数据类型
- MyEclipse报错:String cannot be resolved to a type
- mysql高效sql语句_高效SQL优化 非常好用的SQL语句优化34条
- 图文详解mina框架
- 亚马逊自动化仓库事故,机器人失手戳破有毒喷雾,24名工人被送医院
- 2.2 Zend_Controller 基础
- 校园二手交易平台设计总览
- 数值分析Guass分解——错误讨论
- oracle 同义词循环连,Oracle出现ORA-01775: 同义词的循环链问题
- ResHacker使用小解
- 2010年JNCIA-FWV、JNCIS-FWV教学视频
- 基于Tensorflow深度学习的ECG身份识别方法(二)
- html 的id指什么,appid是什么?
- 小白学 Python 爬虫(26):为啥上海二手房你都买不起
- unicode中文数字与阿拉伯数字转换
- java md5 密钥_java代码实现MD5加密及验证方法
- matlab bwmorph spur,用python编写matlab的bwmorph(image,'spur')
- 票据打印控件 票据打印控件