sql server存储过程的条件判断和事务管理
2006-07-27 17:40
441 查看
通过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
存储过程语句如下:
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
也可以如下:
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
数据库表(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
存储过程语句如下:
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
也可以如下:
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
相关文章推荐
- 根据条件进行判断事务存储过程
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- 在SQL Server存储过程中使用事务及返回值
- mysql 存储过程示例,有参有返回值,使用到了判断,循环,游标,临时表,事务
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- sql server 判断表/视图/存储过程是否存在
- MySQL存储过程之事务管理
- sql server 判断表/视图/存储过程是否存在
- MySql存储过程之逻辑判断和条件控制
- 在存储过程中使用事务处理 sql server 删除多表操作一致性的问题
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- sql server在存储过程中使用游标和事务
- sql server 存储过程事务处理实现批量删除
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- sql server 存储过程事务与异常处理的一般方式
- MySQL存储过程之事务管理
- MySQL存储过程之事务管理
- SQL Server在存储过程中编写事务处理代码的三种方法