asp呼叫儲存過程

2021-04-12 12:24:41 字數 1863 閱讀 4664

1.呼叫儲存過程的一般方法

先假設在sql server中有一儲存過程dt_users:

create procedure [dbo].[dt_users]

as select * from users

return

go 第一種方法是不利用command物件,直接用recordset物件

set rs=server.createobject("adodb.recordset")

sql="exec dt_users"

rs.open sql,conn,1,1 這樣就可

第二種方法是利用command物件

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.給儲存過程傳遞引數

如果儲存過程中不用引數,而是單一的sql語句,還顯示不出呼叫儲存過程的優勢

比如說一bbs的查詢,可以按作者和主題查詢!則可以建立儲存過程如下:

引數keyword為關鍵字,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 這樣我們呼叫儲存過程時只需將引數傳遞過去就行了,而省去在asp中來寫一段程式

用第一種方法:

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

set comm.activeconnection=conn

comm.commandtext="dbo.dt_bbs"

set rs=server.createobject("adodb.recordset")

rs.cursortype=3

rs.open comm,,1,1

3.進一步討論

比較上面我所說的兩種在asp種呼叫儲存過程的方法,

第一種方法需要物件少,但recordset物件支援的屬性少了很多,比如說:rs.recordcount,rs.pagecount,rs.absolutepage這些屬性

都不支援,所以用第一種方法就有侷限,比如說要分頁顯示紀錄時,就必須要用到第二種方法。

我們用sql server中的儲存過程目的是為了加快速度,但乙個儲存過程中sql語句有很多時,它的優勢特別明顯。如果sql語句不是很多,

而我們用第二種方法就必須多建立乙個command物件,可能還會減慢速度!所以我們要均衡各方面的利益來使用儲存過程。不過我覺得不過速度怎樣,使用儲存過程可以使程式更加模組化,便於修改,和除錯(可以直接在sql server下除錯,而不用在ie下看asp的結果)。

asp呼叫儲存過程!

1.呼叫儲存過程的一般方法 先假設在sql server中有一儲存過程dt users create procedure dbo dt users as select from users return go 第一種方法是不利用 mand物件,直接用recordset物件 set rs server...

asp呼叫儲存過程

1.呼叫儲存過程的一般方法 先假設在sql server中有一儲存過程dt users create procedure dbo dt users asselect from users return go第一種方法是不利用command物件,直接用recordset物件 set rs server...

asp呼叫儲存過程

3.進一步討論 比較上面我所說的兩種在asp種呼叫儲存過程的方法,第一種方法需要物件少,但recordset物件支援的屬性少了很多,比如說 rs.recordcount,rs.pagecount,rs.absolutepage這些屬性 都不支援,所以用第一種方法就有侷限,比如說要分頁顯示紀錄時,就必...