2007年12月18日 星期二

asp Store Procedures用法

SET SpCMD=Server.CreateObject("ADODB.COMMAND")
SpCMD.CommandType=4
SpCMD.ActiveConnection=Conn
SpCMD.CommandText="SP"

IsPass=SpCMD.CreateParameter("pa",adchar,2)
SpCMD.Parameters.Append IsPass

SpCMD.EXECUTE
RESPONSE.WRITE IsPass.VALUE

這樣你在接收值的時候,
在SpCMD.EXECUTE 之後
可以使用
RESPONSE.WRITE SpCMD(0)
或者
RESPONSE.WRITE SpCMD("p")
來列印出來傳回的值!
________________________________________________________________________

Dim user_name, user_mail, user_phone, DbConn_ConnectionString
Dim strSQL, objConnection, paramString

user_name=Request.Form("user_name")
user_mail=Request.Form("user_mail")
user_phone=Request.Form("user_phone")

DbConn_ConnectionString = "Provider=SQLOLEDB; Data Source=Jackie; Initial Catalog=pubs; User ID=sa; Password="
set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.open DbConn_ConnectionString
'這是我在如何動態傳回表單內容那篇文章中呼叫預儲程序所使用的方法
'將commamndtype 屬性設定為 adCmdStoredProc 表示 commandtext 為預儲程
'序 ,相關說明請參考如何動態傳回表單
strSQL = "sp_insert_members"
Cmd.CommandText = strSQL
Cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("user_name", adChar, adParamInput,11,user_name)
cmd.Parameters.Append cmd.CreateParameter("user_mail", adVarChar, adParamInput,40,user_mail)
cmd.Parameters.Append cmd.CreateParameter("user_phone", adVarChar, adParamInput,20,user_phone)
Cmd.Execute

'這裡所用的方法僅僅需要用到連結物件 Connection 的 Execute 方法來完成,在語法
'上較為簡單,同樣也是將從表單所接受到的參數傳送給預儲程序中所定義的參數(請注意
'參數是為字串型態還是數字型態,不同的型態有不同的定義方法)。
paramString = paramString & "'" & user_name & "', '" & user_mail & "', '" & user_phone
On Error Resume Next
objConnection.execute("exec sp_insert_members " & paramString)
objConnection.close
SET objConnection = nothing

參考網址

http://www.pc-net.com.tw/aspro/article/asp0421.asp?articleid=47
________________________________________________________________________

asp呼叫stored procedure並且傳回特定參數值的語法 | 2007/5/10 下午 03:21:00
1)簡易的寫法如下,但此寫法只能取回預存程序的第一次執行SQL指令的結果集合,我的經驗是,如果預存程序中含有一次以上的SQL指令執行,則會取不到正確或特定的結果集合,如果要可以操控取得特定值,則必須放棄簡易寫法,而採用第2種較複雜但正式的寫法:
Dim str, id,cmd
id = 123
str = "GetAccById @Id=" & id
Set rs = connuploadbk.execute(str)
response.write rs(0)
2)比較正式的寫法
'假設已建好一個名叫GetAccById的預存程序,其需要2個參數,1個是數值的@Id,另1個是字串的@Account,長度為40,同時@Account將會回傳一個值
'並假設已有一個conn資料庫連線開啟,可正確使用GetAccById預存程序
Dim cmd, acc, lngRecs,id
id = 123
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandText = "GetAccById"
.CommandType = &H0004

.Parameters.Append .CreateParameter ("@Id", 3, &H0001, ,id)
.Parameters.Append .CreateParameter ("@Account", 200, &H0002, 40)

.Execute lngRecs,,&H00000080
acc = .Parameters("@Account")
End With
response.write acc

沒有留言: