ASP呼叫帶引數儲存過程的幾種方式

2021-04-13 05:52:06 字數 4729 閱讀 3585

最近有很多的朋友問到呼叫儲存過程的問題,這裡簡單介紹幾種asp呼叫帶引數儲存過程的方法。

1 這也是最簡單的方法,兩個輸入引數,無返回值:

set connection = server.createobject("adodb.connection")

connection.open somedsn

connection.execute "procname varvalue1, varvalue2"

''將所有物件清為nothing,釋放資源

connection.close

set connection = nothing

2 如果要返回 recordset 集:

set connection = server.createobject("adodb.connection")

connection.open somedsn

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

rs.open "exec procname varvalue1, varvalue2",connection

''將所有物件清為nothing,釋放資源

rs.close

connection.close

set rs = nothing

set connection = nothing

3 以上兩種方法都不能有返回值,(recordset除外),如果要得到返回值,需要用command的方法。

首先說明,返回值有兩種。一種是在儲存過程中直接return乙個值,就象c和vb的函式返回值那樣;另一種是可以返回多個值,存

儲這些值的變數名稱需要在呼叫引數中先行指定。

這個例子要處理多種引數,輸入引數,輸出引數,返回記錄集以及乙個直接返回值(夠全了吧?)

儲存過程如下:

use pubs

go-- 建立儲存過程

create procedure sp_pubstest

-- 定義三個引數變數,注意第三個,特別標記是用於輸出

@au_lname varchar (20),

@intid int,

@intidout int output

asselect @intidout = @intid + 1

select *

from authors

where au_lname like @au_lname + ''%''

--直接返回乙個值

return @intid + 2

呼叫該儲存過程的asp程式如下:

<%@ language=vbscript %>

<%

dim cmdsp

dim adors

dim adcmdspstoredproc

dim adparamreturnvalue

dim adparaminput

dim adparamoutput

dim adinteger

dim ival

dim oval

dim adofield

dim advarchar

『這些值在 vb 中是預定義常量,可以直接呼叫,但在 vbscript 中沒有預定義

adcmdspstoredproc = 4

adparamreturnvalue = 4

adparaminput = 1

adparamoutput = 2

adinteger = 3

advarchar = 200

ival = 5

oval = 3

''建乙個command物件

set cmdsp = server.createobject("adodb.command")

''建立鏈結

cmdsp.activeconnection = "driver=;server=(local);uid=sa;pwd=;database=pubs"

''定義command 物件呼叫名稱

cmdsp.commandtext = "sp_pubstest"

''設定command呼叫型別是儲存過程 (adcmdspstoredproc = 4)

cmdsp.commandtype = adcmdspstoredproc

''執行儲存過程,並得到返回記錄集

set adors = cmdsp.execute

''把每個記錄列印出來,其中的字段是虛擬的,可以不用管

while not adors.eof

for each adofield in adors.fields

response.write adofield.name & "=" & adofield.value & "

" & vbcrlf

next

response.write "

"adors.movenext

wend

''列印兩個輸出值:

response.write "@intidout = 「 & cmdsp.parameters("@intidout").value & "

"response.write "return value = " & cmdsp.parameters("return_value").value & "

"''大掃除

set adors = nothing

set cmdsp.activeconnection = nothing

set cmdsp = nothing

%>

在asp中使用儲存過程

為了提高asp程式的效率,有時需要在asp中使用使用sql server的儲存技術,下面簡單作乙個介紹。

儲存過程的建立

這裡只簡單介紹如何在sql server的企業管理器中如何建立儲存過程:

(1)開啟企業管理器enterprise manager

(2)選擇伺服器組(sql server group)、伺服器、資料庫(database)以及相就的資料庫,滑鼠右擊對應資料庫下的stored procdures項,在彈出的選單中選擇new stored procedure,在stored procedures properties中輸入建立儲存過程的語句。下面是乙個例子:

create procedure proctest @mycola char(10),@mycolb char(10),@mycolc text  as

insert into chatdata (mycola,mycolb,mycolc) values(@mycola,@mycolb,@mycolc)

在sql server的文件中它的語法為:

create proc[edure] procedure_name [;number]   [

[varying] [= default] [output]   ]

[,...n]  [with      ]  [for replication]  as

sql_statement [...n]

如果你對sql語法不熟悉,可以使用check syntax來檢查語法。在上例中,表示建立儲存過程名為mycola,帶3個引數的儲存過過程,其中第乙個引數mycola資料型別為char,寬度10;第2個引數資料型別為char,寬度為10,第3個引數資料型別為text,在這裡使用的是sql server的資料型別。

參許引數值的型別的意義如下:

名稱值 整數值 功能

addbtimestamp 135 日期時間資料型別

addecimal 14 十進位制整數值

addouble 5 雙精度小數值

aderror 10 系統錯誤資訊

adguid 72 全域性唯一識別字(globally unique identifier)

addispath 9 com/ole自動物件(automation object)

adinteger 3 4位元組有符號整數

adiunknown 13 com/ole物件

adlongvarbinary 205 大型2位元組值

adlongvarchar 201 大型字串值

adlongvarwchar 203 大型未編碼字串

adnumeric 131 十進位制整數值

adsingle 4 單精度浮點小數

ad**allint 2 2位元組有符號整數

adtinyint 16 1位元組有符號整數

adunsignedbigint 21 8位元組無符號整數

adunsignedint 19 4位元組無符號整數

adunsigned**allint 18 2位元組無符號整數

adunsignedtinyint 17 1位元組無符號整數

aduserdefined 132 使用者自定義資料型別

advariant 12 ole物件

advarbinary 204 雙位元組字元變數值

advarchar 200 字元變數值

advarchar 202 未編碼字串變數值

adwchar 130 未編碼字串

方向值的意義如下:

名稱值 整數值 功能

adparaminput 1 允許資料輸入至該引數當中

adparamoutput 2 允許資料輸出至該引數當中

adparaminputoutput 3 允許資料輸入、輸出至該引數當中

adparamreturnvalue 4 允許從一子程式中返回資料至該引數當中

ASP呼叫帶引數儲存過程的幾種方式

asp呼叫帶引數儲存過程的幾種方式 最近有很多的朋友問到呼叫儲存過程的問題,這裡簡單介紹幾種asp呼叫帶引數儲存過程的方法。1 這也是最簡單的方法,兩個輸入引數,無返回值 set connection server.createobject adodb.connection connection.o...

儲存過程如何呼叫帶引數的儲存過程

declare value varchar max exec tmfun getsearchstr 陝西 table1 name value output select from users where address value 顯示結果為 解釋 其中,tmfun getsearchstr 為儲存...

asp呼叫儲存過程

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