當前位置:首頁 » 存儲配置 » ado調用存儲過程

ado調用存儲過程

發布時間: 2025-06-04 19:24:22

① delphi 中 使用ADOQuery 如何執行已有的存儲過程

建立proc
create proc MyABC @a int ,@b int, @c int output
as
set @c=@a*@b
sql中執行:
declare @a int,@b int,@c int
set @a=250
set @b=40
exec MyABC @a,@b,@c output --注意要添加output 關鍵字!
select @c
在D中:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(『execute MyABC :a,:b,:c output『);//也要添加output 關鍵字!
ADOQuery1.Parameters.ParamByName(『a『).Value:=250;
ADOQuery1.Parameters.ParamByName(『b『).Value:=40;
ADOQuery1.ExecSQL;
showmessage(ADOQuery1.Parameters.ParamByName(『c『).Value);

② asp 如何返回存儲過程中的某個變數值

你可以使用 ADODB.Command 來調用存儲過程,如:

Dim adoComm
'// 創建一個對象,我們用來調用存儲過程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
'// 設置連接,設 adoConn 為已經連接的 ADODB.Connection 對象
.ActiveConnection = adoConn
'// 類型為存儲過程,adCmdStoredProc = 4
.CommandType = 4
'// 存儲過程名稱
.CommandText = "你的存儲過程名稱"
'// 設置輸入參數
.Parameters.Item("@輸入參數").Value = "值"
'// 執行存儲過程
.Execute

If .Parameters.Item("@返回參數名稱").Value = True Then

Else

End If
End With
'// 釋放對象
Set adoComm = Nothing

詳細參考我原來寫的文章
http://bbs.51js.com/viewthread.php?tid=51505&fpage=2

③ 哪位大神告訴一下vb6.0怎麼調用帶2個參數的存儲過程,有簡單的例子最好。謝謝!

DimCmdSP
DimadoRS
DimadCmdSPStoredProc
DimadParamReturnValue
DimadParaminput
DimadParamOutput
DimadInteger
DimiVal
DimoVal
DimadoField
DimadVarChar

'這些值在VB中是預定義常量,可以直接調用,但在VBScript中沒有預定義
adCmdSPStoredProc=4
adParamReturnValue=4
adParaminput=1
adParamOutput=2
adInteger=3
adVarChar=200

iVal=5
oVal=3

'建一個command對象
setCmdSP=Server.CreateObject("ADODB.Command")

'建立連結
CmdSP.ActiveConnection="Driver={SQLServer};server=(local);Uid=sa;Pwd=sa;Database=Pubs"

'定義command對象調用名稱
CmdSP.CommandText="sp_PubsTest"

'設置command調用類型是存儲過程(adCmdSPStoredProc=4)
CmdSP.CommandType=adCmdSPStoredProc

'往command對象中加參數
'定義存儲過程有直接返回值,並且是個整數,省缺值是4
CmdSP.Parameters.AppendCmdSP.CreateParameter("RETURN_VALUE",adInteger,adParamReturnValue,4)
'定義一個字元型輸入參數
CmdSP.Parameters.AppendCmdSP.CreateParameter("@au_lname",adVarChar,adParaminput,20,"M")
'定義一個整型輸入參數
CmdSP.Parameters.AppendCmdSP.CreateParameter("@intID",adInteger,adParamInput,,iVal)
'定義一個整型輸出參數
CmdSP.Parameters.AppendCmdSP.CreateParameter("@intIDOut",adInteger,adParamOutput,oVal)

'運行存儲過程,並得到返回記錄集
SetadoRS=CmdSP.Execute


'把每個記錄列印出來,其中的欄位是虛擬的,可以不用管
WhileNotadoRS.EOF

foreachadoFieldinadoRS.Fields
Response.WriteadoField.Name&"="&adoField.Value&"<br>"&vbCRLF
Next
Response.Write"<br>"
adoRS.MoveNext
Wend

'列印兩個輸出值:
Response.Write"<p>@intIDOut=「&CmdSP.Parameters("@intIDOut").Value&"</p>"
Response.Write"<p>Returnvalue="&CmdSP.Parameters("RETURN_VALUE").Value&"</p>"


'大掃除
SetadoRS=nothing
SetCmdSP.ActiveConnection=nothing
SetCmdSP=nothing

以上代碼僅供參考


其實核心的就是如何獲得存儲過程的返回值

④ 如何在VBA中調用存儲過程

方法有幾種

1、

SetConn=Server.CreateObject("ADODB.Connection")
Conn.openstrConn
iferr.number<>0then
response.Write"資料庫鏈接失敗。"'&err.Description
response.End
endIf
setRs=server.CreateObject("adodb.recordset")
'調用存儲過程:[dbo].[Usp_GetUserMenu]
strsql="[dbo].[Usp_GetUserMenu]@UserID='"&Session(g_SessionName&"_UserID")&"'"
'這句話是關鍵,CursorLocation意思是游標本地化
rs.CursorLocation=3
Rs.openstrsql,conn,1,1
iferr.number<>0Then
conn.close
setconn=nothing
endif
fori=1tors.RecordCount
iMenuType=rs("MenuType")
......
rs.MoveNext
next
rs.Close
setrs=nothing
conn.close
setconn=nothing

2. 使用adobd.Command對象

VB6.0調用存儲過程的例子

(說明:以下代碼摘自微軟的MSDN,經過測試沒問題。使用該方法的前提條件是必須知道將要使用的參數化命令的詳細情況。)

打開Form1窗體,Copy以下的代碼到窗體中,該段代碼將測試存儲過程ADOTestRPE的返回值、輸入參數及輸出參數,測試的過程中,可能需要修改鏈接字元串。

SubCreateParms()
DimADOCmdAsNewADODB.Command
DimADOPrmAsNewADODB.Parameter
DimADOConAsADODB.Connection
DimADORsAsADODB.Recordset
DimsParmNameAsString
DimstrConnectAsString
DimrStrAsString

OnErrorGoToErrHandler

strConnect="driver={SQLServer};server=(local);uid=sa;pwd=;database=pubs"

SetADOCon=NewADODB.Connection
WithADOCon
.Provider="MSDASQL"
.CursorLocation=adUseServer'MustuseServersidecursor.
.ConnectionString=strConnect
.Open
EndWith

SetADOCmd.ActiveConnection=ADOCon
WithADOCmd
.CommandType=adCmdStoredProc
.CommandText="ADOTestRPE"
EndWith

'.
sParmName="Return"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamReturnValue,,0)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=-1

'
'parameter.
sParmName="Output"
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamOutput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sP

armName).Value=999

'Parameter2
sParmName="R1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=1

'Parameter3
sParmName="P1Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0

'Parameter4
sParmName="E1Num"'
'1.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0

'Parameter5
sParmName="R2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=2

'Parameter6
sParmName="P2Num"'.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0

'Parameter7
sParmName="E2Num"'
'2.
SetADOPrm=ADOCmd.CreateParameter(sParmName,adInteger,_
adParamInput)
ADOCmd.Parameters.AppendADOPrm
ADOCmd.Parameters(sParmName).Value=0

SetADORs=ADOCmd.Execute

DoWhile(NotADORsIsNothing)
IfADORs.State=adStateClosedThenExitDo
WhileNotADORs.EOF
Fori=0ToADORs.Fields.Count-1
rStr=rStr&":"&ADORs(i)
Nexti
Debug.PrintMid(rStr,3,Len(rStr))
ADORs.MoveNext
rStr=""
Wend
Debug.Print"----------------------"
SetADORs=ADORs.NextRecordset
Loop

Debug.Print"Return:"&ADOCmd.Parameters("Return").Value
Debug.Print"Output:"&ADOCmd.Parameters("Output").Value

GoToShutdown

ErrHandler:
CallErrHandler(ADOCon)
ResumeNext

Shutdown:
SetADOCmd=Nothing
SetADOPrm=Nothing
SetADORs=Nothing
SetADOCon=Nothing
EndSub

PrivateSubCommand1_Click()
CallCreateParms
EndSub

SubErrHandler(objConAsObject)
DimADOErrAsADODB.Error
DimstrErrorAsString

ForEachADOErrInobjCon.Errors
strError="Error#"&ADOErr.Number&vbCrLf&ADOErr.Description_
&vbCr&_
"(Source:"&ADOErr.Source&")"&vbCr&_
"(SQLState:"&ADOErr.SQLState&")"&vbCr&_
"(NativeError:"&ADOErr.NativeError&")"&vbCr


IfADOErr.HelpFile=""Then
strError=strError&"NoHelpfileavailable"&vbCr&vbCr
Else
strError=strError&"(HelpFile:"&ADOErr.HelpFile&")"_
&vbCr&"(HelpContext:"&ADOErr.HelpContext&")"&_
vbCr&vbCr
EndIf

Debug.PrintstrError
Next

objCon.Errors.Clear
EndSub
熱點內容
代理ip伺服器租用 發布:2025-06-06 11:20:49 瀏覽:904
android設置緩存路徑 發布:2025-06-06 11:16:39 瀏覽:875
編譯器職業規劃 發布:2025-06-06 10:51:48 瀏覽:515
城市開坦克300買哪個配置 發布:2025-06-06 10:16:08 瀏覽:92
安卓和蘋果哪個性價比最大 發布:2025-06-06 10:11:17 瀏覽:131
python變數賦值變數 發布:2025-06-06 10:10:02 瀏覽:935
寶馬mini哪個配置合適 發布:2025-06-06 09:55:37 瀏覽:53
請輸入手勢密碼在哪裡 發布:2025-06-06 09:47:32 瀏覽:711
一個編譯程序由哪幾個階段 發布:2025-06-06 09:46:51 瀏覽:702
為什麼在別處登錄後不能修改密碼 發布:2025-06-06 09:46:10 瀏覽:513