asp調(diào)用存儲(chǔ)過(guò)程
更新時(shí)間:2006年06月23日 00:00:00 作者:
1.調(diào)用存儲(chǔ)過(guò)程的一般方法
先假設(shè)在sql server中有一存儲(chǔ)過(guò)程dt_users:
CREATE PROCEDURE [dbo].[dt_users]
AS
select * from users
return
GO
第一種方法是不利用command對(duì)象,直接用recordset對(duì)象
set rs=server.createobject("adodb.recordset")
sql="exec dt_users"
rs.open sql,conn,1,1 這樣就可
第二種方法是利用command對(duì)象
set comm=server.createobject("adodb.command")
comm.commantype=4
set comm.activeconnection=conn
comm.commandtext="dbo.dt_users"
set rs=server.createobject("adodb.recordset")
rs.open comm,,1,1
2.給存儲(chǔ)過(guò)程傳遞參數(shù)
如果存儲(chǔ)過(guò)程中不用參數(shù),而是單一的sql語(yǔ)句,還顯示不出調(diào)用存儲(chǔ)過(guò)程的優(yōu)勢(shì)!
比如說(shuō)一bbs的查詢,可以按作者和主題查詢!則可以建立存儲(chǔ)過(guò)程如下:
參數(shù)keyword為關(guān)鍵字,choose是選擇查詢的方法。
CREATE PROCEDURE [dbo].[dt_bbs]
@keyword varchar(20)=null,
@choose int=null
as
if @choose=1
select * from bbs where name like @keyword
else
select * from bbs where subject like @keyword
return
go
這樣我們調(diào)用存儲(chǔ)過(guò)程時(shí)只需將參數(shù)傳遞過(guò)去就行了,而省去在asp中來(lái)寫(xiě)一段程序
用第一種方法:
set rs=server.createobject("adodb.recordset")
sql="exec dt_bbs '"&keyword&"',"&choose&""
rs.open sql,conn,1,1
用第二種方法:
set comm=server.createobject("adodb.command")
comm.commantype=4
comm.Parameters.append comm.CreateParameter("@keyword",adChar,adParamInput,50,keyword)
comm.Parameters.append comm.CreateParameter("@keyword",adInteger,adParamInput,,choose)
set comm.activeconnection=conn
comm.commandtext="dbo.dt_bbs"
set rs=server.createobject("adodb.recordset")
rs.CursorType=3
rs.open comm,,1,1
3.進(jìn)一步討論
比較上面我所說(shuō)的兩種在asp種調(diào)用存儲(chǔ)過(guò)程的方法,
第一種方法需要對(duì)象少,但recordset對(duì)象支持的屬性少了很多,比如說(shuō):rs.recordcount,rs.pagecount,rs.absolutepage這些屬性
都不支持,所以用第一種方法就有局限,比如說(shuō)要分頁(yè)顯示紀(jì)錄時(shí),就必須要用到第二種方法。
我們用sql server中的存儲(chǔ)過(guò)程目的是為了加快速度,但一個(gè)存儲(chǔ)過(guò)程中sql語(yǔ)句有很多時(shí),它的優(yōu)勢(shì)特別明顯。如果sql語(yǔ)句不是很多,
而我們用第二種方法就必須多創(chuàng)建一個(gè)command對(duì)象,可能還會(huì)減慢速度!所以我們要均衡各方面的利益來(lái)使用存儲(chǔ)過(guò)程。
不過(guò)我覺(jué)得不過(guò)速度怎樣,使用存儲(chǔ)過(guò)程可以使程序更加模塊化,便于修改,和調(diào)試(可以直接在sql server下調(diào)試,而不用在ie下看asp的結(jié)果)。
先假設(shè)在sql server中有一存儲(chǔ)過(guò)程dt_users:
CREATE PROCEDURE [dbo].[dt_users]
AS
select * from users
return
GO
第一種方法是不利用command對(duì)象,直接用recordset對(duì)象
set rs=server.createobject("adodb.recordset")
sql="exec dt_users"
rs.open sql,conn,1,1 這樣就可
第二種方法是利用command對(duì)象
set comm=server.createobject("adodb.command")
comm.commantype=4
set comm.activeconnection=conn
comm.commandtext="dbo.dt_users"
set rs=server.createobject("adodb.recordset")
rs.open comm,,1,1
2.給存儲(chǔ)過(guò)程傳遞參數(shù)
如果存儲(chǔ)過(guò)程中不用參數(shù),而是單一的sql語(yǔ)句,還顯示不出調(diào)用存儲(chǔ)過(guò)程的優(yōu)勢(shì)!
比如說(shuō)一bbs的查詢,可以按作者和主題查詢!則可以建立存儲(chǔ)過(guò)程如下:
參數(shù)keyword為關(guān)鍵字,choose是選擇查詢的方法。
CREATE PROCEDURE [dbo].[dt_bbs]
@keyword varchar(20)=null,
@choose int=null
as
if @choose=1
select * from bbs where name like @keyword
else
select * from bbs where subject like @keyword
return
go
這樣我們調(diào)用存儲(chǔ)過(guò)程時(shí)只需將參數(shù)傳遞過(guò)去就行了,而省去在asp中來(lái)寫(xiě)一段程序
用第一種方法:
set rs=server.createobject("adodb.recordset")
sql="exec dt_bbs '"&keyword&"',"&choose&""
rs.open sql,conn,1,1
用第二種方法:
set comm=server.createobject("adodb.command")
comm.commantype=4
comm.Parameters.append comm.CreateParameter("@keyword",adChar,adParamInput,50,keyword)
comm.Parameters.append comm.CreateParameter("@keyword",adInteger,adParamInput,,choose)
set comm.activeconnection=conn
comm.commandtext="dbo.dt_bbs"
set rs=server.createobject("adodb.recordset")
rs.CursorType=3
rs.open comm,,1,1
3.進(jìn)一步討論
比較上面我所說(shuō)的兩種在asp種調(diào)用存儲(chǔ)過(guò)程的方法,
第一種方法需要對(duì)象少,但recordset對(duì)象支持的屬性少了很多,比如說(shuō):rs.recordcount,rs.pagecount,rs.absolutepage這些屬性
都不支持,所以用第一種方法就有局限,比如說(shuō)要分頁(yè)顯示紀(jì)錄時(shí),就必須要用到第二種方法。
我們用sql server中的存儲(chǔ)過(guò)程目的是為了加快速度,但一個(gè)存儲(chǔ)過(guò)程中sql語(yǔ)句有很多時(shí),它的優(yōu)勢(shì)特別明顯。如果sql語(yǔ)句不是很多,
而我們用第二種方法就必須多創(chuàng)建一個(gè)command對(duì)象,可能還會(huì)減慢速度!所以我們要均衡各方面的利益來(lái)使用存儲(chǔ)過(guò)程。
不過(guò)我覺(jué)得不過(guò)速度怎樣,使用存儲(chǔ)過(guò)程可以使程序更加模塊化,便于修改,和調(diào)試(可以直接在sql server下調(diào)試,而不用在ie下看asp的結(jié)果)。
相關(guān)文章
.NET Framework各版本(.NET2.0 3.0 3.5 4.0)區(qū)別
本文主要介紹.NET各個(gè)版本之間的區(qū)別,以幫助新手朋友選擇適合的.NET Framework的版本進(jìn)行開(kāi)發(fā)。2016-03-03
ASP的Error對(duì)象知識(shí)簡(jiǎn)析
這篇文章主要介紹了ASP的Error對(duì)象,需要的朋友可以參考下2015-09-09
ASP 常見(jiàn)的連接字符串寫(xiě)法(access2007)
ASP中常見(jiàn)的連接字符串寫(xiě)法,包括了access2007等2009-11-11
javascript asp教程第三課 new String() 構(gòu)造器
javascript asp教程第三課 new String() 構(gòu)造器...2007-03-03

