create procedure getrecordfrompage
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 欄位名
@pagesize int = 10, -- 頁尺寸
@pageindex int = 1, -- 頁碼
@iscount bit = 0, -- 返回記錄總數, 非 0 值則返回
@ordertype bit = 0, -- 設定排序型別, 非 0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
as declare @strsql varchar(6000) -- 主語句
declare @strtmp varchar(100) -- 臨時變數
declare @strorder varchar(400) -- 排序型別
if @ordertype != 0
begin
set @strtmp = '<(select min'
set @strorder = ' order by [' + @fldname +'] desc'
endelse
begin
set @strtmp = '>(select max'
set @strorder = ' order by [' + @fldname +'] asc'
end
set @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @fldname + '] from [' + @tblname + ']' + @strorder + ') as tbltmp)'
+ @strorder
if @strwhere != ''
set @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @fldname + '] from [' + @tblname + '] where ' + @strwhere + ' '
+ @strorder + ') as tbltmp) and ' + @strwhere + ' ' + @strorder
if @pageindex = 1
begin
set @strtmp = ' '
if @strwhere != ' '
set @strtmp = ' where ' + @strwhere
set @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + ']' + @strtmp + ' ' + @strorder
end
if @iscount != 0
set @strsql = 'select count(*) as total from [' + @tblname + ']'
exec (@strsql)
go
儲存過程除錯
sql server2008儲存過程除錯 昨天被問到sql server中儲存過程怎麼除錯,我曾經寫儲存過程,除錯方法非常笨拙,就是逐條執行語句,然後檢視結果是不是預期的,這樣的除錯方法,實在是無奈之舉,極大程度地限制了開發速度和準確性。今天在他的提點下,研究了下sql server 2008的儲存...
除錯儲存過程
在編寫儲存過程中,寫了n多行 結果一執行程式,就在資料庫這裡報錯。那麼如何在寫完儲存過程之後就能立即測試一下村粗過程呢?1 不會寫t sql來正確執行儲存過程 當你想到要除錯儲存過程的時候,人家微軟一定早已經想到並且做到了。微軟一定為沒有很好資料庫程式設計的人員開發了 傻瓜式 的工具。我們應該去儲存...
通過儲存過程分頁
asp.net中實現分明功能,主要運用的是aspnetpager,再呼叫儲存過程進行分頁,該方法適合運用的範圍非常廣,不錯,set ansi nulls on set quoted identifier on goalter procedure dbo getpagerdata 表名 tbname ...