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

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

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

復(fù)制代碼 代碼如下:

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

相關(guān)文章

最新評論