|
if exists (select * from dbo.sysobjects where id = object_id(N''''[dbo].[OrderOptimize]'''') and OBJECTPROPERTY(id, N''''IsProcedure'''') = 1) drop procedure [dbo].[OrderOptimize] GO
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS OFF GO
CREATE Procedure OrderOptimize
( @ID int, @intOrder int, @TableName varchar(50) ) AS
BEGIN TRANSACTION TransOrderOptimize
Declare @SqlStr nvarchar(500) Declare @i int Declare @CursorSql nvarchar (500) Declare @UpdateOrder nvarchar(500) declare @TempId int --declare @CursorName varchar(50) --print(N'''' update ''''+cast(@TableName as varchar(50))+'''' set intOrder = ''''''''''''+cast(@intOrder as int)+'''''''''''' where ID=''''''''''''+@ID+''''''''''''''''); begin set @SqlStr=N'''' update ''''+cast(@TableName as varchar(50))+'''' set intOrder = ''''''''''''+cast(@intOrder as varchar(50))+'''''''''''' where ID=''''''''''''+cast(@ID as varchar(10))+'''''''''''''''';
exec sp_executesql @SqlStr; end
Begin set nocount on set @i=0; --set @CursorName=''''product''''; --set @SqlTemp=N''''select ID from ''''+cast(@TableName as varchar(50))+'''' ORDER BY intOrder''''; --declare Order_Cursor cursor for sp_executesql @SqlTemp
declare @temp nvarchar(500) set @temp =N''''declare Order_Cursor cursor for select ID from ''''+cast(@TableName as varchar(50))+'''' ORDER BY intOrder'''' exec sp_executesql @temp
open Order_Cursor fetch next from Order_Cursor into @TempId
while @@FETCH_STATUS=0 Begin --print @TempId; set @i=@i+1; set @UpdateOrder=N''''Update ''''+cast(@TableName as varchar(50))+'''' Set intOrder=''''''''''''+cast(@i as varchar(10))+'''''''''''' where ID=''''''''''''+cast(@TempId as varchar(10))+''''''''''''''''; --print @UpdateOrder; execute sp_executesql @UpdateOrder fetch next from Order_Cursor into @TempId End
CLOSE Order_Cursor DEALLOCATE Order_Cursor End
if @@error<>0 Begin raiserror(''''排序优化失败,请与开发商联系!'''',16,1) RollBack Transaction TransOrderOptimize Return 99 end
Commit Transaction TransOrderOptimize GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
|