用于DataGrid MoveUp,MoveDown的存储过程
2006-12-19 16:15
309 查看
所有逻辑都写到了存储过程中,所以在使用的时候,直接调用存储过程即可,无需在前台代码中做过多的处理,但是一定要记得在绑定的sql语句中必须有order by orderno来排序
--测试表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Job_Person]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Job_Person]
GO
CREATE TABLE [dbo].[Job_Person] (
[Job_PersonID] [int] NOT NULL ,
[PersonID] [int] NOT NULL ,
[OrderNo] [int] NULL ,
[CreateOn] [datetime] NULL ,
[CreateByID] [int] NULL ,
[ModifyOn] [datetime] NULL ,
[ModifyByID] [int] NULL
) ON [PRIMARY]
GO
--测试存储过程
CREATE PROCEDURE tp_MoveOrder_Entity_Job
(
@Job_EntityID int ,--表主键id
@Direction INT, -- @Direction : move up : -1 , move down : 1
@UserID int --修改人id
)
AS
declare @EntityID int
declare @OrderNo INT
declare @MaxOrderNo Int
declare @OrderNo_1 int
declare @OrderNo_2 int
declare @Job_EntityID_1 int
declare @Job_EntityID_2 int
BEGIN
SET NOCOUNT ON
BEGIN
Select @OrderNo = OrderNo, @EntityID = PersonID From Job_Person
Where Job_PersonID = @Job_EntityID
select @MaxOrderNo = max(OrderNo) From Job_Person
WHERE PersonID = @EntityID
SET @OrderNo_1 = @OrderNo
SET @OrderNo_2 = @OrderNo + @Direction
if (@MaxOrderNo = 1 )
return 0 --只有一条记录则返回
if ((@OrderNo = 1 ) AND (@Direction = -1))--设置move up orderno
BEGIN
SET @OrderNo_1 = 1
SET @OrderNo_2 = @MaxOrderNo
END
if ((@OrderNo = @MaxOrderNo ) AND (@Direction = 1))--设置move down orderno
BEGIN
SET @OrderNo_1 = 1
SET @OrderNo_2 = @MaxOrderNo
END
--根据orderno取得不同的move资料
select @Job_EntityID_1= Job_PersonID from Job_Person
where PersonID = @EntityID and OrderNo = @OrderNo_2
select @Job_EntityID_2= Job_PersonID from Job_Person
where PersonID = @EntityID and OrderNo = @OrderNo_1
--update orderno
update Job_Person
set orderno = @OrderNo_1,
ModifyOn = getdate(),
ModifyByID = @UserID
where Job_PersonID = @Job_EntityID_1
IF @@ERROR <> 0
RETURN 1
--update orderno
update Job_Person
set orderno = @OrderNo_2,
ModifyOn = getdate(),
ModifyByID = @UserID
where Job_PersonID = @Job_EntityID_2
IF @@ERROR <> 0
RETURN 1
END
RETURN 0
END
GO
--测试表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Job_Person]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Job_Person]
GO
CREATE TABLE [dbo].[Job_Person] (
[Job_PersonID] [int] NOT NULL ,
[PersonID] [int] NOT NULL ,
[OrderNo] [int] NULL ,
[CreateOn] [datetime] NULL ,
[CreateByID] [int] NULL ,
[ModifyOn] [datetime] NULL ,
[ModifyByID] [int] NULL
) ON [PRIMARY]
GO
--测试存储过程
CREATE PROCEDURE tp_MoveOrder_Entity_Job
(
@Job_EntityID int ,--表主键id
@Direction INT, -- @Direction : move up : -1 , move down : 1
@UserID int --修改人id
)
AS
declare @EntityID int
declare @OrderNo INT
declare @MaxOrderNo Int
declare @OrderNo_1 int
declare @OrderNo_2 int
declare @Job_EntityID_1 int
declare @Job_EntityID_2 int
BEGIN
SET NOCOUNT ON
BEGIN
Select @OrderNo = OrderNo, @EntityID = PersonID From Job_Person
Where Job_PersonID = @Job_EntityID
select @MaxOrderNo = max(OrderNo) From Job_Person
WHERE PersonID = @EntityID
SET @OrderNo_1 = @OrderNo
SET @OrderNo_2 = @OrderNo + @Direction
if (@MaxOrderNo = 1 )
return 0 --只有一条记录则返回
if ((@OrderNo = 1 ) AND (@Direction = -1))--设置move up orderno
BEGIN
SET @OrderNo_1 = 1
SET @OrderNo_2 = @MaxOrderNo
END
if ((@OrderNo = @MaxOrderNo ) AND (@Direction = 1))--设置move down orderno
BEGIN
SET @OrderNo_1 = 1
SET @OrderNo_2 = @MaxOrderNo
END
--根据orderno取得不同的move资料
select @Job_EntityID_1= Job_PersonID from Job_Person
where PersonID = @EntityID and OrderNo = @OrderNo_2
select @Job_EntityID_2= Job_PersonID from Job_Person
where PersonID = @EntityID and OrderNo = @OrderNo_1
--update orderno
update Job_Person
set orderno = @OrderNo_1,
ModifyOn = getdate(),
ModifyByID = @UserID
where Job_PersonID = @Job_EntityID_1
IF @@ERROR <> 0
RETURN 1
--update orderno
update Job_Person
set orderno = @OrderNo_2,
ModifyOn = getdate(),
ModifyByID = @UserID
where Job_PersonID = @Job_EntityID_2
IF @@ERROR <> 0
RETURN 1
END
RETURN 0
END
GO
相关文章推荐
- 用于DataGrid MoveUp,MoveDown的存储过程
- 用于DataGrid MoveUp,MoveDown的存储过程
- DataGrid和存储过程结合的分页,只读取当前页数据
- 关于datagrid的使用以及动态修改,以及使用存储过程的介绍
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- DataGrid 存储过程的分页
- 含SQLSTATE mysql错误代码汇总大全,可用于存储过程判断异常情况
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- 将存储过程用于Command对象
- DataGrid自定义分页存储过程
- sql中一个分解字符串的实用函数(也可用于存储过程中的 in 查询)
- 游标循环来处理复杂问题,多用于存储过程中
- easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)
- 用于分页的存储过程
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页[转]
- DataGrid 存储过程的分页
- DataGrid 存储过程的分页詳解