2016-08-31 19 views
0

データベースからデータを取得するVB6アプリケーションがあります。 作成したセッションを閉じているときに問題が発生しています。VB6 CreateObject( "OracleInProcServer.XOraSession")セッションを閉じることができません

セッションオブジェクトをNothingに設定してもセッションが保持されているように見えます。私はアプリケーションを閉じるときに閉じられるように見えます。

次のクエリを使用して、データベースのセッションを確認しています。以下は

SELECT * FROM v$session where terminal='VirtualMachineName'; 

コードで、

Dim pCounter As Long, strLoadSQL As String 
Dim objCursor As OraDynaset 
Dim tmpDBSessobj As OracleInProcServer.OraSession 
Dim tmpDBClientobj As OracleInProcServer.OraDatabase 
Dim objresetGI As GameInfo 

On Error GoTo ErrorHandler 

Set tmpDBSessobj = CreateObject("OracleInProcServer.XOraSession") 
Set tmpDBClientobj = tmpDBSessobj.OpenDatabase(strDBServiceName, strDBUsernamePassword, ORADB_ORAMODE) 

'set autocommit false --- 
tmpDBClientobj.AutoCommit = False 

'set params 
Do Until tmpDBClientobj.Parameters.Count = 0 
    For pCounter = 0 To tmpDBClientobj.Parameters.Count - 1 
     tmpDBClientobj.Parameters.Remove pCounter 
    Next 
Loop 
'bind 
tmpDBClientobj.Parameters.Add "ocursor", Nothing, ORAPARM_OUTPUT 
tmpDBClientobj.Parameters(0).serverType = ORATYPE_CURSOR 

'declare proc signature 
strLoadSQL = "begin resetpackage.getresetID(:ocursor); end;" 

'reset this game 
tmpDBClientobj.ExecuteSQL (strLoadSQL) 
Set objCursor = tmpDBClientobj.Parameters(0).Value 

'load the list box 
If objCursor.RecordCount > 0 Then 
    argscollection.Clear 
    objCursor.MoveFirst 
    Do Until objCursor.EOF 
     objresetGI.strGameNo = objCursor.fields(0).Value 
     objresetGI.strAction = objCursor.fields(1).Value 
     objresetGI.strProcessInd = objCursor.fields(2).Value 
     argscollection.Add objresetGI, objCursor.fields(0).Value 
    objCursor.MoveNext 
    Loop 
End If 

Set objCursor = Nothing 
tmpDBClientobj.Close 
Set tmpDBClientobj = Nothing 
Set tmpDBSessobj = Nothing 

この点で任意の助けが理解されるであろう。

答えて

0

objCursorを使用すると、近くに何もないオプションを使用する必要があります。objCursor.Close

関連する問題