各位老师和朋友:
我现在需要在WINCC6.2下用C脚本访问SQL SERVER 存储过程(有输入输出参数)。
想请各位老师和朋友提供一个完整的访问语句(C脚本),谢谢!!!
问题补充:
dcount107:
您好!
非常感谢您的指导,那如果添加“输出参数”,方法应该和添加“输入参数”一样,是不是要特别指明它是输出。又该如何写呢,请指教。我刚学习,实在是不好意思。
最佳答案
数据导出和存储过程是两码事,不要混为一谈。
要访问存储过程,必然要使用ADODB.Command对象,而C脚本似乎无法使用oComm->ActiveConnection = oConn;这样的语句来指定连接(至少我试过是这样的),因此走C脚本行不通。
下面是一个例子,用于访问带一个参数的存储过程:
----------------------------
'数据库名称:ProTest 表名:USERNAME 字段1:USERID 字段2:USERNAME
'#存储过程:'
'CREATE PROCEDURE DelUser
' @UserID Int
' As
' DELETE FROM USERNAME WHERE USERID = @UserID
Dim oConn,oComm,oPara
Set oConn = CreateObject("ADODB.Connection")
Set oComm = CreateObject("ADODB.Command")
Set oPara = CreateObject("ADODB.Parameter")
Dim strConn
strConn="Driver={SQL Server};Server=.\WINCC;uid=;pass=;database=ProTest"
oConn.Open strConn '连接数据库
HMIRuntime.Trace "SQL Connecting OK!" & vbCrLf
oComm.ActiveConnection = oConn
oComm.CommandType =&H0004 'adCmdStoredProc '类型为存储过程,相当于调用SQL SERVER预设的函数
oComm.CommandText = "DelUser" '指定存储过程名称
Set oPara = oComm.CreateParameter("USERID", 3,&H0001 , 4) '添加1个参数 3--adInteger,&H0001--adParamInput
oPara.Value = 2 '设置参数值(即欲删除的UserID)
oComm.Parameters.Append oPara '添加
oComm.Execute '执行命令
Set oPara= Nothing
Set oComm= Nothing
oConn.Close
Set oConn = Nothing
-------------------------
补充:肯定要指定类型的啊,&H0002代表adParamOutput,比如:
Set oParaOut = oComm.CreateParameter("TotleCount", 3,&H0002 , 4)
....
....
MsgBox oParaOut.Value
提问者对于答案的评价:
很详细,非常感谢!
以后有问题还要请教您啊!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc275908.html