国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Sql Service存儲過程分頁

2024-07-21 02:47:10
字體:
來源:轉載
供稿:網友
Sql Service存儲過程分頁

  一起是用Oracle數據庫。。感覺oracle數據庫強大、查詢速度是杠杠的。換了家公司用的是SQL SERVICE。以前用了1年現在撿回以前的記憶。動手寫了動態SQL過存儲過程分頁。感覺和oracle語法不太一樣外。其他感覺沒啥區別。。

  這個是通用存儲過程。但是有一個問題我沒解決就是條件怎么通用寫。我條件都是拼接字符串感覺很不安全。不曉得博友門有木有什么解決方案

  不多說了直接上代碼。

  

GOIF (SELECT COUNT(*) FROM sysobjects s WHERE s.[type]='P' AND s.name='SP_PAGE')>0DROP PROC SP_PAGEGO CREATE PROC SP_PAGE(@tbName VARCHAR(50),@Condition NVARCHAR(1000),@SortColumn VARCHAR(100), @isDesc INT,@thisPage INT,@PageRowNumber INT,@sumPage INT OUT) AS BEGIN BEGIN TRANSACTION  DECLARE @exeSql NVARCHAR(1000) ; DECLARE @sumRowNumber INT,@descStr NVARCHAR(10); SET @exeSql='select @sumRowNumber=count(*) from '+@tbName+' '+@Condition; --執行動態SQL獲取值EXEC sp_executesql  @exeSql, N'@sumRowNumber int out',@sumRowNumber OUT;--計算總頁數SET @sumPage=(@sumRowNumber-1)/@PageRowNumber+1;--計算分頁行DECLARE @BeginRow INT,@EndRow INT;SET @BeginRow=(@thisPage-1)*@PageRowNumber+1;SET @EndRow=@thisPage*@PageRowNumber;--計算排序IF @isDesc=1BEGINSET @descStr='desc';ENDELSEBEGINSET@descStr='asc';ENDSET @exeSql='select * from (select a.*,ROW_NUMBER() OVER(order by '+@SortColumn+' '+@descStr+ ') as rowIndex from '+@tbName+' a '+@Condition+') a where a.rowIndex BETWEEN '+CONVERT(VARCHAR(10),@BeginRow)+' AND '+CONVERT(VARCHAR(10),@EndRow)+'';EXEC(@exeSql);--事物提交還是回滾if @@ERROR>0BEGINROLLBACK TRANSACTION;ENDELSEBEGINCOMMIT TRANSACTION;END; END

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 美姑县| 自治县| 瑞金市| 齐河县| 延津县| 揭阳市| 鸡西市| 寿宁县| 浮梁县| 鹤山市| 翁牛特旗| 阳原县| SHOW| 左贡县| 塔河县| 普兰店市| 桓台县| 海口市| 鹤山市| 怀来县| 余干县| 保靖县| 汪清县| 永兴县| 松江区| 莱阳市| 灵武市| 利川市| 甘泉县| 虎林市| 兰西县| 进贤县| 乐亭县| 太仓市| 曲沃县| 泗阳县| 怀化市| 宁强县| 阿尔山市| 三都| 聊城市|