sql server存储过程的条件判断和事务管理
来源:互联网 发布:mac 问号重启选择网络 编辑:程序博客网 时间:2024/04/28 05:54
通过sql server存储过程周期性地根据条件字段值设置其他字段,包括条件判断和事务管理。实例语句如下。
数据库表(vipPoint)定义语句如下:
CREATE TABLE [dbo].[vipPoint] (
[userCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[point] [int] NOT NULL ,
[currentStatus] [int] NOT NULL ,
[baseStatus] [int] NOT NULL
) ON [PRIMARY]
GO
[userCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[point] [int] NOT NULL ,
[currentStatus] [int] NOT NULL ,
[baseStatus] [int] NOT NULL
) ON [PRIMARY]
GO
存储过程语句如下:
CREATE procedure vipProcess
as
begin
if (MONTH(getdate())=7)
begin
begin transaction
update vipPoint set currentStatus=1 where baseStatus=1 and point>1000
update vipPoint set currentStatus=0 where baseStatus=1 and point<1000
update vipPoint set currentStatus=1 where baseStatus=0 and point>1500
update vipPoint set currentStatus=0 where baseStatus=0 and point<1500
/**//**update vipPoint set point=0**/
update vipPoint set point=10000000000000000000000000000
if (@@error<>0)
begin
print('rollback transaction')
rollback transaction
return 0;
end;
commit transaction
end;
end;
GO
as
begin
if (MONTH(getdate())=7)
begin
begin transaction
update vipPoint set currentStatus=1 where baseStatus=1 and point>1000
update vipPoint set currentStatus=0 where baseStatus=1 and point<1000
update vipPoint set currentStatus=1 where baseStatus=0 and point>1500
update vipPoint set currentStatus=0 where baseStatus=0 and point<1500
/**//**update vipPoint set point=0**/
update vipPoint set point=10000000000000000000000000000
if (@@error<>0)
begin
print('rollback transaction')
rollback transaction
return 0;
end;
commit transaction
end;
end;
GO
也可以如下:
CREATE procedure vipProcess
as
begin
if (MONTH(getdate())=7)
begin
begin transaction
update vipPoint set currentStatus=case when point>=1000 then 1 when point<1000 then 0 end where baseStatus=1
update vipPoint set currentStatus=case when point>=1500 then 1 when point<1500 then 0 end where baseStatus=0
/**//**update vipPoint set point=0**/
update vipPoint set point=10000000000000000000000000000
if (@@error<>0)
begin
print('rollback transaction')
rollback transaction
return 0;
end;
commit transaction
end;
end;
GO
as
begin
if (MONTH(getdate())=7)
begin
begin transaction
update vipPoint set currentStatus=case when point>=1000 then 1 when point<1000 then 0 end where baseStatus=1
update vipPoint set currentStatus=case when point>=1500 then 1 when point<1500 then 0 end where baseStatus=0
/**//**update vipPoint set point=0**/
update vipPoint set point=10000000000000000000000000000
if (@@error<>0)
begin
print('rollback transaction')
rollback transaction
return 0;
end;
commit transaction
end;
end;
GO
- sql server存储过程的条件判断和事务管理
- 多条件查询存储过程-SQL Server
- Sql Server 编写多条件查询语句的存储过程--包含语法错误的存储过程与正确存储过程
- SQL Server的存储过程
- sql server的存储过程
- sql server的存储过程
- 存储过程:判断条件写法
- 有用的SQL Server语句和存储过程
- 一些有用的SQL Server语句和存储过程
- SQL SERVER 所有表的语句和存储过程
- 一些有用的SQL Server语句和存储过程
- sql server 2000 存储过程的类型和实例
- 推荐的SQL Server语句和存储过程
- Oracle和SQL Server存储过程的不同
- SQL Server存储过程的编写和优化措施
- Oracle和SQL Server存储过程的不同
- sql server 批量修改表和存储过程的所有者
- sql server存储过程和游标的用途
- C++类型信息numeric_limits 类函数说明翻译(更新中)
- asp中的事务
- Singleton的安全实现!
- C#与Java的比较
- How to use Serial Port in Windows
- sql server存储过程的条件判断和事务管理
- 如何使用Javascript XSLT 处理XML文件(1)
- 被房子压死的程序员...
- 看完了Writing your first Django app, part 1,我的笔记(1)
- 简单说说U-boot的修改
- sealed关键字的意思
- 透明的CEdit控件
- 查询数据库中最新n条数据
- PHP面向对象编程