有两种方法,其一是直接使用SQL语句的方法:
Set dbCountryConn = CreateObject("ADODB.Connection")
dbCountryConn.Open "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=prv;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=HZ27P4993473.corp.statestr.com)(PORT=1521))));Password=prvUser;" 'open connection
Set dbCountryRs = Createobject("ADODB.recordset")
connectionCountryString = "call sp_qa_test('8BA3',to_date('2013-06-28', 'yyyy-MM-dd'),to_date('2013-07-04', 'yyyy-MM-dd'),'CLOSE','999528AJ1','ivt_can_eq_eq','itl_eq','CA','itl_eq',null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)"
Set dbCountryRs = dbCountryConn.Execute(connectionCountryString)
dbCountryConn.Close
第二种是使用ADODB.Command对象:
Function CallReplaySP()
On Error Resume Next
Err.Clear
Dim objCmd, guid, errorCode
Set objCmd = CreateObject("ADODB.Command")
guid = testparameters.item("GUID")
objCmd.ActiveConnection = objConnection
objCmd.CommandType = 4 'Stored Procedures
objCmd.CommandText = "OPGCEP2.GCTH_PKG_UTL.SP_REPLAY_TRANSACTIONS" 'sp name
objCmd.CommandTimeout = 30
Set objParm = objCmd.CreateParameter("GUID", 200, 1, 32, guid)
objCmd.Parameters.Append objParm
Set objParm2 = objCmd.CreateParameter("P_USERID", 200, 1, 30, "e521915")
objCmd.Parameters.Append objParm2
Set objParm3 = objCmd.CreateParameter("P_ERROR_CODE", 139, 2, 4)
objCmd.Parameters.Append objParm3
objCmd.Execute
errorCode = objCmd.Parameters("P_ERROR_CODE").Value
If errorCode <> 0 Then
''stepErrDescription = "Error Code is " & errorCode & "."
StepResult = "Failed"
Exit Function
End If
Set objCmd = Nothing
If Err.Number <> 0 Then
''stepErrDescription = Err.Description
StepResult = "Failed"
Err.Clear
Exit Function
Else
stepResult="Passed"
stepActual="Replay SP is executed successfully"
End if
End Function
Set objParm2 = objCmd.CreateParameter("P_USERID", 200, 1, 30, "e521915")的200表示类型,1表示入参,30表示长度。