欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP下存儲過程編寫入門全接觸第4/5頁

 更新時間:2007年10月23日 20:32:55   作者:  

復制代碼 代碼如下:

'**調用同時具有返回值、輸入參數、輸出參數的存儲過程**  
DIM MyComm,UserID,UserName  
UserID = 1  
Set MyComm = Server.CreateObject("ADODB.Command")  
with MyComm  
.ActiveConnection = MyConStr 'MyConStr是數據庫連接字串  
.CommandText = "getUserName" '指定存儲過程名  
.CommandType = 4 '表明這是一個存儲過程  
.Prepared = true '要求將SQL命令先行編譯  
'返回值要最先被聲明  
.Parameters.Append .CreateParameter("RETURN",2,4)  
'以下兩參數的聲明順序也做相應顛倒  
.Parameters.append .CreateParameter("@UserName",200,2,40)  
.Parameters.append .CreateParameter("@UserID",3,1,4,UserID)  
.Execute  
end with  
if MyComm(0) = 1 then  
UserName = MyComm(1)  
else  
UserName = "該用戶不存在"  
end if  
Set MyComm = Nothing  
6. 同時返回參數和記錄集的存儲過程 
  有時候,我們需要存儲過程同時返回參數和記錄集,比如在利用存儲過程分頁時,要同時返回記錄集以及數據總量等參數。以下給出一個進行分頁處理的存儲過程: 
/*SP6*/ 
CREATE PROCEDURE dbo.getUserList 
@iPageCount int OUTPUT, --總頁數 
@iPage int, --當前頁號 
@iPageSize int --每頁記錄數 
as 
set nocount on 
begin 
--創(chuàng)建臨時表 
create table #t (ID int IDENTITY, --自增字段 
userid int, 
username varchar(40)) 
--向臨時表中寫入數據 
insert into #t 
select userid,username from dbo.[UserInfo] 
order by userid 
--取得記錄總數 
declare @iRecordCount int 
set @iRecordCount = rowcount 
--確定總頁數 
IF @iRecordCount%@iPageSize=0 
SET @iPageCount=CEILING(@iRecordCount/@iPageSize) 
ELSE 
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1 
--若請求的頁號大于總頁數,則顯示最后一頁 
IF @iPage > @iPageCount 
SELECT @iPage = @iPageCount 
--確定當前頁的始末記錄 
DECLARE @iStart int --start record 
DECLARE @iEnd int --end record 
SELECT @iStart = (@iPage - 1) * @iPageSize 
SELECT @iEnd = @iStart + @iPageSize + 1 
--取當前頁記錄 
select * from #t where ID> @iStart and ID <@iEnd 
--刪除臨時表 
DROP TABLE #t 
--返回記錄總數 
return @iRecordCount 
end 
go 
  在上面的存儲過程中,輸入當前頁號及每頁記錄數,返回當前頁的記錄集,總頁數及記錄總數。為了更具典型性,將記錄總數以返回值的形式返回。以下是調用該存儲過程的ASP代碼(具體的分頁操作略去): 
'**調用分頁存儲過程** 
DIM pagenow,pagesize,pagecount,recordcount 
DIM MyComm,MyRst 
pagenow = Request("pn") 
'自定義函數用于驗證自然數 
if CheckNar(pagenow) = false then pagenow = 1 
pagesize = 20 
Set MyComm = Server.CreateObject("ADODB.Command") 
with MyComm 
.ActiveConnection = MyConStr 'MyConStr是數據庫連接字串 
.CommandText = "getUserList" '指定存儲過程名 
.CommandType = 4 '表明這是一個存儲過程 
.Prepared = true '要求將SQL命令先行編譯 
'返回值(記錄總量) 
.Parameters.Append .CreateParameter("RETURN",2,4) 
'出參(總頁數) 
.Parameters.Append .CreateParameter("@iPageCount",3,2) 
'入參(當前頁號) 
.Parameters.append .CreateParameter("@iPage",3,1,4,pagenow) 
'入參(每頁記錄數) 
.Parameters.append .CreateParameter("@iPageSize",3,1,4,pagesize) 
Set MyRst = .Execute 
end with 
if MyRst.state = 0 then '未取到數據,MyRst關閉 
recordcount = -1 
else 
MyRst.close '注意:若要取得參數值,需先關閉記錄集對象 
recordcount = MyComm(0) 
pagecount = MyComm(1) 
if cint(pagenow)> =cint(pagecount) then pagenow=pagecount 
end if 
Set MyComm = Nothing 
'以下顯示記錄 
if recordcount = 0 then 
Response.Write "無記錄" 
elseif recordcount > 0 then 
MyRst.open 
do until MyRst.EOF 
...... 
loop 
'以下顯示分頁信息 
...... 
else 'recordcount=-1 
Response.Write "參數錯誤" 
end if 
  對于以上代碼,只有一點需要說明:同時返回記錄集和參數時,若要取得參數,需先將記錄集關閉,使用記錄集時再將其打開。

相關文章

最新評論