1. 程式人生 > >mssql 實現排序上移下移

mssql 實現排序上移下移

MSSQL:

儲存過程

-- drop PROCEDURE [dbo].[Proc_sort_UpDown] 
create PROCEDURE [dbo].[Proc_sort_UpDown] 
	@Sign int = 0, -- 0: 上移 1:下移 
	@TableName nvarchar(50), <span style="white-space:pre">	</span>-- 表名 
	@ItemName nvarchar(50), <span style="white-space:pre">	</span>-- 主鍵欄位名 
	@ItemID int, <span style="white-space:pre">			</span>-- 被移動的主鍵ID 
	@SortName nvarchar(50), <span style="white-space:pre">	</span>-- 排序ID 
	@TypeName nvarchar(50)='', <span style="white-space:pre">	</span>-- 分類欄位名 
	@TypeValue nvarchar(50)= '' <span style="white-space:pre">	</span>-- 分類值 
AS 
BEGIN 
	SET NOCOUNT ON 
	DECLARE 
		@SQL nvarchar(4000), 
		@ThisSort int, -- 當前ID 
		@PREVID int, -- 前一個ID 
		@NextID int, -- 後一個ID 
		@Count int 

		--臨時索引表-- 
		CREATE TABLE #Tab 
		( 
		ItemID int, 
		Sort int 
		) 
	SET @SQL = 'INSERT INTO #Tab (ItemID,Sort) SELECT ' 
	
[email protected]
+','[email protected]+' FROM '[email protected] --INSERT INTO #Tab (ItemID,Sort) SELECT AutoID,sortID FROM test IF (@TypeName<>'' AND @TypeValue<>'') SET @SQL = @SQL+' WHERE '[email protected]+'='[email protected] SET @SQL = @SQL+' ORDER BY '[email protected]
+' ASC ' --INSERT INTO #Tab (ItemID,Sort) SELECT AutoID,sortID FROM test WHERE lang=cn ORDER BY SortID ASC EXEC(@SQL) SET @SQL = '' SELECT @Count = COUNT(*) FROM #Tab SELECT @ThisSort = Sort FROM #Tab WHERE ItemID = @ItemID IF(@ThisSort>1) SELECT @PREVID = ItemID FROM #Tab WHERE Sort=(@ThisSort-1) IF(@ThisSort<@Count) SELECT @NextID = ItemID FROM #Tab WHERE Sort=(@ThisSort+1) IF(@Sign=0) BEGIN IF(@ThisSort>1) BEGIN SET @SQL = 'UPDATE '
[email protected]
+' SET '[email protected]+'='+CONVERT(varchar(100),(@ThisSort-1))+' WHERE '[email protected]+' = '+CONVERT(varchar(100),@ItemID) + ';' + 'UPDATE '[email protected]+' SET '[email protected]+'='+CONVERT(varchar(100),@ThisSort)+' WHERE '[email protected]+' = '+CONVERT(varchar(100),@PREVID) END END ELSE BEGIN IF(@ThisSort<@Count) BEGIN SET @SQL = 'UPDATE '[email protected]+' SET '[email protected]+'='+CONVERT(varchar(100),(@ThisSort+1))+' WHERE '[email protected]+' = '+CONVERT(varchar(100),@ItemID) + ';' + 'UPDATE '[email protected]+' SET '[email protected]+'='+CONVERT(varchar(100),@ThisSort)+' WHERE '[email protected]+' = '+CONVERT(varchar(100),@NextID) END END EXEC(@SQL) END

測試表
CREATE TABLE [dbo].[test](
	[AutoID] [int] IDENTITY(1,1) NOT NULL,
	[cName] [varchar](50) NULL,
	[sortID] [int] NULL,
 CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
-- 測試資料
INSERT INTO [Demo].[dbo].[test]
           ([cName]
           ,[sortID])
     VALUES
           ('JAVA',1),
           ('C++',2),
           ('C#',3),
           ('Object-C',4),
           ('PHP',5),
           ('Ruby',6),
           ('Python',7)
GO




應用操作->儲存過程執行

DECLARE @RC int
DECLARE @Sign int
DECLARE @TableName nvarchar(50)
DECLARE @ItemName nvarchar(50)
DECLARE @ItemID int
DECLARE @SortName nvarchar(50)
DECLARE @TypeName nvarchar(50)
DECLARE @TypeValue nvarchar(50)

select @Sign=0
select @TableName='test'
select @ItemName='AutoID'
select @ItemID=6
select @SortName='sortID'
select @TypeName=''
select @TypeValue=''


EXECUTE @RC = [Demo].[dbo].[Proc_sort_UpDown] 
   @Sign
  ,@TableName
  ,@ItemName
  ,@ItemID
  ,@SortName
  ,@TypeName
  ,@TypeValue
GO


相關推薦

mssql 實現排序上移下移

MSSQL: 儲存過程 -- drop PROCEDURE [dbo].[Proc_sort_UpDown] create PROCEDURE [dbo].[Proc_sort_UpDown] @Sign int = 0, -- 0: 上移 1:下移 @Tabl

【Axure】--repeater(中繼器)實現上移下移

案例效果: 案例描述: 點選上下移動的按鈕,移動相應題型順序。 元件準備: 上移、下移圖示: Repeater: Table做表頭: 題型編號: 操作步驟: 雙擊進入Repeater

jq實現表格上移/下移/置頂功能

這裡主要是運用了選擇器的一些知識,全部程式碼如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="

AngularJS實現數據列表的增加、刪除和上移下移等功能實例

enter 基礎 round 電子郵件 color bsp 基礎功 net 效果圖 轉: http://www.jb51.net/article/91991.htm 這篇文章給大家分享了AngularJS循環實現數據列表的增加、刪除和上移下移等基礎功能,對大家學習Ang

js操作table中tr的順序,實現上移下移一行的效果

總體思路是在table外部加個div,修改div的innerHtml實現改變tr順序的效果 具體思路是 獲取當前要移動tr行的rowIndex,在table中刪除掉,然後迴圈table的rows,到了目標行再直接加進去,最後把整體的html賦值給div完成效果 js程式碼如下 /

Android中RecyclerView的item中控制元件的點選事件新增刪除一行、上移下移一行的程式碼實現

Demo展示圖片 佈局程式碼 // (layout)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an

實現上移下移 置頂置底效果

html <div> <span (click)="caretDirection(col,'up')"><i class="anticon anticon-c

jquery 實現列表上移下移功能

       由於比較忙,好久沒寫新的文章了,雖然本人寫的文章可能對一些高手來說是小菜一碟,但是對於新手來說還是比較難得,重在為和我一樣的小菜鳥提供一個簡單的實現方法,以及一個思路罷了。        那麼,廢話少說,我們開始進入主題。       今天我們實現的是一個列表

easyui datagrid實現單行的上移下移,以及儲存移動的結果

    開始接觸easyui感覺他的封裝真是極佳的,善假於物的思想使我們善於站在巨人的肩膀上,人家封裝好這麼好的外掛直接讓俺們使用,我們在需求不同可進行簡單的調整。 </span>//調整展示次序載入圖片 function UpDownFormat(va

分類排序方法——上移下移操作(ASP版)

      最近專案中遇到了上移下移操作的一個操作,以前也看到過,但一直沒有去研究過,這次專案中遇到了,也就去研究了一把,其實實現原理也挺簡單的,說白了就是要記錄資料庫裡的要進行排序表的總記錄數量,然後根據迴圈的次數,多寫幾個隱藏變數,進行上移下移操作的時候進行判斷就可以了。

通用的排序上移下移功能

前兩天需要實現一個上移下移功能,就上網上搜了一下,沒想到這個簡單的小功能也沒有搜到特別理想的結果,只有自己動手豐衣足食了,雖然簡單,但是希望對大家有所幫助。 功能:實現任意有排序欄位表單的上移和下移,並可以按分類來操作排序。 首先是儲存過程:寫的稍微有些繁瑣,可能是半夜太困

Oracle,實現一條記錄的上移下移

對於一個元組的上移下移排序 1.今天要和大家分享一個Oracle資料庫實現對一條記錄的上移下移功能 對於熟悉PLSQL程式設計的人來說,語法之類自然已經是家常便飯了,在此我就不再贅述,那麼我們直接上程式碼, 表結構程式碼: create table ST

上移下移實現邏輯

在開發中經常有上移、下移的操作,猛的一想感覺邏輯還很複雜,其實很簡單主要有以下步驟: 首先頁面上的展示列表在後臺查詢的時候要根據某個欄位排序,這樣展示的資料才是有序的,才可以實現此功能。 新增上移或者下移的時候需要把當前資料的ID和目標ID傳到後臺 後臺排序的欄位互換值

JavaScript算法實現排序

城市 emp aqi 廣州 ava api utf-8 append 顯示 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&g

實現排序二叉樹

eno -type lis blank 後者 升序 以及 代碼 細節 概念 二叉樹:如圖。 某個節點最多有兩個子節點的樹。常用於排序。效率較高。 節點中的值:鍵。key。 兄弟節點:擁有同一個父節點的節點。 根節點:沒有父節點 外部節點:葉子節點,沒有子節點。 內部節點:

java實現排序算法:快排、冒泡排序、選擇排序、插入排序、歸並排序

結果 快速 post ont pla emp string () tro 一、概述:本文主要介紹常見的幾種排序算法的原理以及java實現,包括:冒泡排序、選擇排序、插入排序、快速排序、歸並排序等。 二、冒泡排序: (1)原理:   1、從第一個數據開始,與第二個數據相比較,

JavaScript實現排序二叉樹的相關算法

this remove class () 二叉樹 log 最小值 pos max 1.創建排序二叉樹的構造函數 /** * 創建排序二叉樹的構造函數 * @param valArr 排序二叉樹中節點的值 * @cons

Mysql實現排序

_id 排序 null cas true ble onf log all 排序 SELECT obj.user_id,obj.score,@rownum := @rownum + 1 AS rownum FROM ( SELECT

visualgo 各種算法的具體實現——排序

選中 比較 元素 lec 處的 stun emp elements 可視化   某天發現一個神奇的網站https://visualgo.net/en,對於學習各個算法非常有用,它將算法的步驟可視化,能很好地幫助我們理解。   順序為從小到大。   1,冒泡排序   從頭到尾

java實現排序

算法 排序 Algorithms public class SortDemo { // private static long[] arr = {6,5,2,7,1,8,4,3}; private static long[] arr = {1,2,3,4,5,6,7,8}; private s