当前位置:首页 » 存储配置 » 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
热点内容
pythonencode中文 发布:2025-06-06 11:58:11 浏览:546
note3怎么删除文件夹 发布:2025-06-06 11:46:13 浏览:77
挂机进图脚本 发布:2025-06-06 11:41:49 浏览:654
loadrunnerlinux 发布:2025-06-06 11:41:00 浏览:106
sqlserver服务无法启动 发布:2025-06-06 11:34:09 浏览:61
qq空间导购应用源码 发布:2025-06-06 11:28:21 浏览:460
代理ip服务器租用 发布:2025-06-06 11:20:49 浏览:904
android设置缓存路径 发布:2025-06-06 11:16:39 浏览:879
编译器职业规划 发布:2025-06-06 10:51:48 浏览:515
城市开坦克300买哪个配置 发布:2025-06-06 10:16:08 浏览:92