--事务分三种
--1.显示事务
--我们手动begin transaction ...... commit transaction/rollback transaction
--上面这种写法叫做“显示事务” --2.隐式事务
SET IMPLICIT_TRANSACTIONS { ON | OFF }隐式事务 --3.自动提交事务,SQL Server默认使用的是自动提交事务.
--我们每次执行一条sql语句的时候,sql server都会自动帮我们打开一个事务
--如果该sql语句执行不出错,则sql server自动提交该事务commit
--如果该sql语句执行出错了,那么sql server则自动回滚该事务。rollback --1:创建第一个简单的存储过程
CREATE PROC usp_helloworld
AS
BEGIN
PRINT 'hello world!'
END EXEC usp_helloworld --2:带参数的存储过程
CREATE PROC usp_showmsg
@msg nvarchar(300) ---多个参数使用,隔开。
AS
BEGIN
PRINT @msg
END EXEC usp_showmsg N'XXX' EXEC usp_showmsg @msg=N'' --3:简单的加法存储过程
CREATE PROC usp_add
@n int,
@m int
AS
BEGIN
PRINT @n+@m
END EXEC usp_add 100,200 DROP PROC usp_add --4:带默认值的存储过程
ALTER PROC usp_add
@num1 int = 100, --为参数加默认值
@num2 int = 200
AS
BEGIN
PRINT @num1 + @num2
END --5:部分带默认值的存储过程
ALTER PROC usp_add
@num1 int = 100, --为参数加默认值
@num2 int
AS
BEGIN
PRINT @num1 + @num2
END exec usp_add @num2=50 --6:存储过程中的输出参数
SELECT * FROM TblStudent ALTER PROC usp_selectByAge
@age int,
@count int OUTPUT -- 输出参数
AS
BEGIN
--1. 根据@age进行查询
SELECT * FROM TblStudent where tSAge>@age --2.返回一共查询出了多少条数据
SET @count=(SELECT COUNT(*) FROM TblStudent where tsage>@age)
END DECLARE @c int
EXEC usp_selectByAge @age=20,@count=@c OUTPUT
PRINT @c --7:经典写法:转账使用存储过程来编写
--存储过程
CREATE PROC usp_transfer
@from char(4),
@to char(4),
@money money,
@state bit OUTPUT --1表示转账成功,0表示转账失败!
AS
BEGIN
DECLARE @balance money,@sum int=0
SET @state=0
--1.查询@from中的余额
SET @balance=(SELECT balance FROM bank WHERE bank.cId=@from)
--2.检查余额是否充足
IF @balance-@money>10 BEGIN
----3.开始事务进行转账
--打开事务
BEGIN TRANSACTION
--1.减钱
UPDATE bank SET balance=bank.balance-@money where bank.cId=@from
SET @sum=@sum+@@error
--2.加钱
UPDATE bank SET balance=bank.balance+@money where bank.cId=@to
SET @sum=@sum+@@error IF @sum=0 BEGIN
SET @state=1 --设置转账成功
COMMIT TRAN
END
ELSE
ROLLBACK TRAN END
END
--调用存储过程
DECLARE @ok bit
EXEC usp_transfer @from='',@to='',@money=800,@state=@ok OUTPUT
SELECT @ok SELECT * FROM bank --8:经典:分页存储过程
SELECT * FROM Customers order by Customers.CustomerID asc --创建存储过程
--参数:
--每页大小pagesize
--当先用户要查看第几页
--总页数
--总条数
CREATE PROC usp_get_customers_by_page
@pagesize int=5, --每页多少条
@pageindex int=1, --用户当前要看第几页
@recordcount int OUTPUT, --总记录条数,输出参数
@pagecont int OUTPUT --总页数,输出参数
AS
BEGIN
--1. 分页查询语句
SELECT
T.CustomerID,
T.CompanyName,
T.City,
T.[Address],
T.Phone
FROM (SELECT *,rn=ROW_NUMBER()OVER(ORDER by CustomerID ASC) FROM Customers) AS T
WHERE T.rn BETWEEN @pagesize*(@pageindex-1)+1 and @pagesize*@pageindex --2.返回总条数
SET @recordcount=(SELECT COUNT(*) FROM Customers) --3.计算总页数,并返回
SET @pagecont=CEILING(@recordcount*1.0/@pagesize);
END --调用存储过程
DECLARE @pc int,@rc int
EXEC usp_get_customers_by_page 7,13,@rc OUTPUT,@pc OUTPUT
PRINT @pc
PRINT @rc --9:增删改查:存储过程
--insert
CREATE PROC usp_insert_newperson
@name nvarchar(50),
@age int
AS
BEGIN
INSERT into NewPerson VALUES(@name,@age)
END
------------------------------
--delete
CREATE PROC usp_delete_newperson
@autoId int
AS
BEGIN
DELETE from NewPerson where NewPerson.autoId=@autoId
END
------------------------------
--update
CREATE PROC usp_update_newperson
@autoId int,
@name nvarchar(50),
@age int
AS
BEGIN
UPDATE NewPerson set uName=@name,age=@age WHERE NewPerson.autoId=@autoId
END
---------------------------------------
--select
CREATE PROC usp_select_newperson
AS
BEGIN
SELECT * FROM NewPerson
END
-------------------------------------
CREATE view vw_newperson
AS
SELECT * FROM NewPerson --10:其它-----
SELECT * FROM Contacts
SELECT * FROM deleted INSERT into NewPerson (NewPerson.uName,age)
OUTPUT INSERTED.autoId VALUES('王子斌',20) ----inserted------------------- deleted----------------------- SELECT * FROM Customers DELETE from Customers where Customers.CustomerID='CHOPS' SELECT TOP 0 * INTO CustomersBak FROM Customers SELECT * FROM CustomersBak ALTER TRIGGER tri_customers_after_delete ON Customers
AFTER DELETE
AS
BEGIN
INSERT INTO CustomersBak SELECT * FROM DELETED
END SELECT * FROM Customers DELETE from Customers where Customers.CustomerID IN('CACTU','CENTC','ERNSH') CREATE TABLE A20140222 ( A VARCHAR(10)) DECLARE @SQL varchar(500)
SET @SQL='CREATE TABLE T_'+CONVERT(VARCHAR(10),GETDATE(),112)+' ( A VARCHAR(10))'
PRINT @SQL
EXEC(@SQL ) PRINT CONVERT(VARCHAR(10),GETDATE(),112)

MSSQL Transaction[事务] and Procedure[存储过程]的更多相关文章

  1. MSSQL 视图/事务(TRAN[SACTION])/存储过程(PROC[EDURE])/触发器(TRIGGER )

    --视图 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同: 数据表是实际存储记录的地方, ...

  2. ADO.NET系列之事务和调用存储过程

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 前几篇我们介绍了Conne ...

  3. MSSQL收缩事务日志&日志文件过大无法收缩

    原文:MSSQL收缩事务日志&日志文件过大无法收缩 一.MS SQL SERVER 2005 --1.清空日志 exec('DUMP TRANSACTION 数据库名 WITH NO_LOG' ...

  4. Oracle job procedure 存储过程定时任务

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

  5. [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. 【转】Oracle job procedure 存储过程定时任务

    原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...

  7. oracle procedure存储过程

    1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS 变量1 ; 变量2 DATE: BEG ...

  8. SqlCommand对象-Transaction事务的使用

    using (SqlConnection connection = new SqlConnection(connStr)) { SqlCommand sqlcmd = new SqlCommand() ...

  9. Oracle job procedure 存储过程定时任务(转自hoojo)

    Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 ...

随机推荐

  1. 六、Struts2的配置文件

    六.Struts2的配置文件 1.default.properties:在struts2-core-**.jar的org.apache.struts包中 关于Struts2一些常量配置(框架内部) s ...

  2. [原]hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

    本文出自:blog.csdn.net/svitter 原题:http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧. 这个题目的关键就在于 ...

  3. 常用icon以及color颜色RGB值和对应颜色效果图

    Android谷歌官方扁平化设计常用icon集合   Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图.

  4. 10)Java Error and Exception

      1>异常继承类        Error类和Exception类都继续自Throwable类      Error表示系统级的错误情况,如内存错误这样程序无法通过自身的处理再继续执行下去的情 ...

  5. android开源代码

    Android开源项目--分类汇总 转自:https://github.com/Trinea/android-open-project Android开源项目第一篇——个性化控件(View)篇 包括L ...

  6. WebService IIS 部署

    刚刚开始接触c#怎么发布程序都搞不定,经过查看网上同仁的资料,自己写了个Webservice发布了下 1.首先自己写好程序,鼠标选中所写Webservice程序,单击鼠标右键-------->发 ...

  7. Oracle sql trace

    一.SQL_TRACE说明 1.1.在全局启用 在参数文件(pfile/spfile)中指定:sql_trace =true 1.2.在当前session级设置 启用当前session的跟踪: alt ...

  8. 第十八章 数据访问(In .net4.5) 之 I/O操作

    1. 概述 本章内容包括 文件操作.流操作.读写网络数据 以及 异步I/O操作. 2. 主要内容 2.1 文件操作 ① 使用 Drive 和 DriveInfo 访问磁盘信息. DriveInfo[] ...

  9. Linq的一些记录

    1. IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了, ...

  10. instanceof、==号、Objetc类

    1)instanceof: 判断某个对象是否为某个类的实例,注意多态的运用,一个父类引用指向子类的对象,根据继承,子类就是父类,所以子类也可以看做是父类的一个实例.  形式:引用 instanceof ...