mssql 2000
set ansi_nulls onset quoted_identifier on
goalter
procedure
[dbo
].[proc_page2000](
@tabname
nvarchar(100)=
'',--
表名、檢視名、查詢語句
@pagesize
int=
10, --
每頁的大小(行數)
@pageindex
int=
1, --
要顯示的頁 從0開始
@fieldshow
nvarchar (200)='*
', --
要顯示的字段列表
@fieldkey
nvarchar (100)='id
', --
主鍵@wherestr
nvarchar (2000)=
'1=1',
@fieldorder
int=
1, --
排序 1desc0asc
@recordcount
intoutput)as
declare
@sql
nvarchar(2000
)if (@wherestr=''
) begin
set@wherestr='
1=1'
enddeclare
@tsql
nvarchar(200)
set@tsql
=n'select @recordcount = count(1) from '+
@tabname+'
where '+
@wherestr
exec sp_executesql @tsql,n'
@recordcount int output
',@recordcount
output
if(@pageindex
>1)
begin
set@sql='
select top '+
ltrim(str(@pagesize))+''
+@fieldshow+'
from '+
@tabname+'
where '+
@wherestr
if(@fieldorder=1
)
begin
set@sql
=@sql+'
and '+
@fieldkey+'
<(select min('+
@fieldkey+'
) from (select top '+
ltrim(str(@pagesize
*(@pageindex
-1)))+''
+@fieldkey+'
from '+
@tabname+'
where '+
@wherestr+'
order by '+
@fieldkey+'
desc) as t) order by '+
@fieldkey+'
desc
'end
else
begin
set@sql
=@sql+'
and '+
@fieldkey+'
>(select max('+
@fieldkey+'
) from (select top '+
ltrim(str(@pagesize
*(@pageindex
-1)))+''
+@fieldkey+'
from '+
@tabname+'
where '+
@wherestr+'
order by '+
@fieldkey+'
asc) as t) order by '+
@fieldkey+'
desc
'end
endelse
begin
set@sql='
select top '+
ltrim(str(@pagesize))+''
+@fieldshow+'
from '+
@tabname+'
where '+
@wherestr
if(@fieldorder=1
)
begin
set@sql
=@sql+'
order by '+
@fieldkey+'
desc
'end
else
begin
set@sql
=@sql+'
order by '+
@fieldkey+'
asc'
endend
execute(@sql)
mssql 2005
set ansi_nulls onset quoted_identifier on
goalter
procedure
[dbo
].[proce_sql2005pagechange](
@tablename
varchar(50), --
表名@refieldsstr
varchar(200) ='*
', --
欄位名(全部欄位為*)
@orderstring
varchar(200), --
排序字段(必須!支援多欄位不用加order by)
@wherestring
varchar(500) =n'', --
條件語句(不用加where)
@pagesize
int, --
每頁多少條記錄
@pageindex
int=
1 , --
指定當前為第幾頁
@totalrecord
int output --
返回總記錄數)as
begin
--處理開始點和結束點
declare
@startrecord
int;
declare
@endrecord
int;
declare
@totalcountsql
nvarchar(500
);
declare
@sqlstring
nvarchar(2000
);
set@startrecord
= (@pageindex
-1)*
@pagesize+1
set@endrecord
=@startrecord
+@pagesize-1
set@totalcountsql
= n'
select @totalrecord = count(*) from '+
@tablename;--
總記錄數語句
set@sqlstring
= n'
(select row_number() over (order by '+
@orderstring+'
) as rowid,'+
@refieldsstr+'
from '+
@tablename;--
查詢語句
--if (@wherestring! =
''or
@wherestring
!=null
)
begin
set@totalcountsql
=@totalcountsql+'
where '+
@wherestring
;
set@sqlstring
=@sqlstring+'
where '+
@wherestring
;
end--
第一次執行得到
--if(@totalrecord is null)
--begin
exec sp_executesql @totalcountsql,n'
@totalrecord int out
',@totalrecord output;--
返回總記錄數
--end
----執行主語句
set@sqlstring='
select * from '+
@sqlstring+'
) as t where rowid between '+
ltrim(str(@startrecord)) +
'and '+
ltrim(str(@endrecord
));
exec(@sqlstring
)
end
Sql2000和Sql2005共存安裝詳細過程
在安裝了sql2000的基礎上安裝sql2005的詳細過程 sql2005版本 sql2005開發版,兩張cd的那種 作業系統 window 2003 server 假設您的電腦已安裝了sql2000,下面開始安裝sql2005。一 執行光碟1 跳過 準備 步驟,直接進行 伺服器元件 工具 聯機叢書...
SQL2005的資料轉成SQL2000
直接restore或附加應該是不行的,用指令碼 導資料肯定沒有問題。2005轉到2000的步驟 1.生成for 2000版本的資料庫指令碼 2005 的manger studio 開啟 物件資源管理器 沒有的話按f8 連線到你的例項 右鍵要轉到2000的庫 任務 生成指令碼 在 指令碼嚮導 的 選擇...
SQL2000和SQL2005的行轉列處理方法
select show id year n1 n2 n3 n4 n5 from datapass db dbo test 1 sql2005中的列轉行.select show id mon,subtotal from datapass db dbo test unpivot subtotal for...