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