儲存過程:
create procedure p_splitpage
@sql nvarchar(4000), --
要執行的
sql語句
@page int=1, --
要顯示的頁碼
@pagesize int, --
每頁的大小
@pagecount int=0 out, --
總頁數@recordcount int=0 out --
總記錄數
as set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
set @recordcount = @pagecount
select @pagecount=ceiling(1.0*@pagecount/@pagesize)
,@page=(@page-1)*@pagesize+1
exec sp_cursorfetch @p1,16,@page,@pagesize
exec sp_cursorclose @p1
go asp
頁面的內容:
sql = "select id, c_s_name from tabnews where deleted<>1 order by id desc"
page = cint(page_get)
if page_post<>""then
page = cint(page_post)
end if
if not page > 0 then
page = 1
end if
pagesize=20』
每頁的條數
set rs = cmd.execute
游標使用:
使用游標的順序:
聲名游標、開啟游標、讀取資料、關閉游標、刪除游標
create
procedure pk_test
as--
宣告個變數
declare @o_id nvarchar
(20)
declare @a_salary float
--宣告
乙個游標
mycursor
,declare mycursor cursor
forselect o_id,a_salary from addsalary
--開啟
游標open mycursor
--從游標裡取出資料
(select
語句中引數的個數必須要和從游標取出的變數名相同
)賦值到我們剛才宣告的個變數中
fetch next from mycursor into @o_id,@a_salary
/*//
判斷游標的狀態
//0 fetch
語句成功
//-1 fetch
語句失敗或此行不在結果集中
//-2
被提取的行不存在
*/ --
迴圈一次次讀取
游標,得到@o_id,@a_salary的值
while
(@@fetch_status
=0)--
開始讀執
begin
--將@o_id,@a_salary 當做乙個已知量,隨便使用。
--顯示出我們每次用游標取出的值
'游標成功取出一條資料
'print @o_id
print @a_salary
--用游標去取下一條記錄
fetch next from mycursor into @o_id,@a_salary
end--
關閉游標
close mycursor
--撤銷
游標deallocate mycursor
go
SQL 儲存過程,游標
if exists select from sysobjects where id object id proc fetch all 事先刪除儲存過程 drop procedure proc fetch all gocreate procedure proc fetch all as 當 set n...
游標對於分頁儲存過程
1。我個人認為最好的分頁方法是 select top 10 from table where id 200 寫成儲存過程,上面的語句要拼一下sql語句,要獲得最後大於的哪乙個id號 2。那個用光標的方式,只適合於小資料量的表,如果表在一萬行以上,就差勁了 你的儲存過程還比不上not in分頁,示例 ...
sql 儲存過程分頁
create proc myx prpagerecordset querystr nvarchar 1000 keyfield nvarchar 200 pagesize int,pagenumber int as begin declare sqltext as nvarchar 4000 dec...