|
分類:[データベース全般]
2017/07/24(Mon) 12:00:17 編集(投稿者)
いつもお世話になります。
VB.Netのプログラム(クラスライブラリ形式)から配列を 使用したPL/SQLの呼び出しでエラーとなってしまいます。 エラーに関する情報を調べても明確が原因がわからず 手詰まりの状態となっています。 コーディングの方法は問題ないと思っているのですが、 何か問題があればご指摘をください。 (下記のエラーはgvOleOraDB.ExecuteNonQuery()にて発生します。)
●環境 OS :Windows Server2012 R2 FrameWork:.Net Framework4.6 TargetCPU:AnyCPU Oracle関連: ・Oracle.ManagedDataAccess.dll(4.121.2.0)を使用してDBアクセス ・Oracleバージョン:11.2.0.3.0 -64bit Production
●プログラム概要
'■変数 Dim gvOleOraDB = New OracleCommand() Dim para1 As New OracleParameter Dim aryValue As ArrayList = New ArrayList
'■接続を開く gvOleOraDB.Connection = New OracleConnection(ホスト,ユーザ,パスワード)) gvOleOraDB.Connection.Open()
'■パラメータ設定 With gvOleOraDB With para1 .OracleDbType = OracleDbType.Char .Direction = ParameterDirection.Input .ParameterName = "pvhairetsu" .CollectionType = OracleCollectionType.PLSQLAssociativeArray aryValue.Clear() aryValue.Add(値1) aryValue.Add(値2) aryValue.Add(値3) .Value = DirectCast(aryValue.ToArray(GetType(String)), String()) .Size = UBound(wvBmnTbl) End With .Parameters.Add(para1) End If End With .Parameters.Add("param1", OracleDbType.Char, 1, pv1 , ParameterDirection.Input)
'-- プロシジャに渡すパラメタ作成(PL/SQL表以外) .Parameters.Add("prCur" , OracleDbType.RefCursor , ParameterDirection.Output) .Parameters.Add("prStatus", OracleDbType.Int16, 2, 0 , ParameterDirection.Output) .Parameters.Add("prErrMsg", OracleDbType.Varchar2, 128, "", ParameterDirection.Output) End With
'■プロパティ設定 gvOleOraDB.CommandText = 該当のPL/SQL(コンパイル済み) gvOleOraDB.CommandType = CommandType.StoredProcedure gvOleOraDB.BindByName = True
'■PL/SQLの実行 gvOleOraDB.ExecuteNonQuery()
●エラーログの内容 Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00604: 再帰SQLレベル1でエラーが発生しました。ORA-01003: 解析された文がありません。 場所 OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl, Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone) 場所 OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl, Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, OracleException& exceptionForArrayBindDML, Boolean bFirstIterationDone) 場所 OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, Int32 longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent, OracleException& exceptionForArrayBindDML, Boolean isFromEF) 場所 Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery() 場所 AXRefMst.clAXRefMst.gfInit(String pvSubSystemCd, String pvSyainCd, Int16 IniID, String pvSysCd, String pvBmnKbn, String pvBmnSumKbn, String pvYukoKbn, String pvInit, Object pvOleOraDB)
|