はじめまして。 私はDECSのLCConnectionクラスを用いてNotesと別のOracle サーバに用意したストアドプロシージャのI/O機能の作成を 行なっているのですが、Oracle側のストアドプロシージャ のパラメータが単一の文字や数値のときは普通に動くのですが、 パラメータが配列となると引数の数または型が一致しないという エラーが出てうまく動作しません。 以下がその一式ですが、何かよいサンプルがありましたら 教えて頂けないでしょうか。よろしくお願いいたします。 /* Oracleテーブル属性 */ SQLWKS> DESC desc_test 列名 NULL? 型 ------------------------------ -------- ---- COL_CHAR VARCHAR2(5) COL_NUM NUMBER COL_DATE DATE /* PL/SQLプロシージャ */ ※K00SHONC.VCARRAY005はVARCHAR2型5文字の配列 create or replace Procedure decs_inserttest ( I_COL_CHAR IN K00SHONC.VCARRAY005, I_COL_NUM IN NUMBER, I_COL_DATE IN DATE, o_sqlcode OUT NUMBER, --エラーコード o_sqlerrm OUT VARCHAR2, --エラーメッセージ o_errinfo OUT VARCHAR2 --エラー箇所 ) AS BEGIN o_errinfo := 'insert desc_test'; o_sqlcode := 0; o_sqlerrm := ' '; INSERT INTO desc_test VALUES( I_COL_CHAR(0), I_COL_NUM, I_COL_DATE ); o_errinfo := ''; EXCEPTION WHEN OTHERS THEN o_sqlcode := SQLCODE; o_sqlerrm := substr(SQLERRM(SQLCODE),1,100); END decs_inserttest; /* LutusScript */ Sub Initialize 'LotusConnectorセッション定義 Dim sess As New LCSession Dim conn As New LCConnection ("oracle8") Dim Parms As New LCFieldList Dim Result As New LCFieldList Dim ParmChar As New LCField (LCTYPE_TEXT,5) Dim ParmNum As New LCField (LCTYPE_INT,1) Dim ParmDate As New LCField (LCTYPE_DATETIME,1) Dim o_sqlcode As New LCField (LCTYPE_INT,1) Dim o_sqlerrm As New LCField (LCTYPE_TEXT,1) Dim o_errinfo As New LCField (LCTYPE_TEXT,1) Dim strTableName As String Dim A(2) As String On Error Goto ErrorProc Print "Oracleへの接続..." 'Oracleへの接続... If DECSConnect(conn,"kcc1","kcc1","kenpo") <> 0 Then Print Str(Err) & ":" & Error$ conn.Disconnect Exit Sub End If strTableName = "desc_test" Print "対象テーブル排他制御..." Call LockTable(conn,strTableName) Print "Oracleプロシージャ初期設定..." 'ストアドプロシージャ利用宣言... Call SetProcedure(conn,"kcc1", "decs_inserttest", "o_sqlcode,o_sqlerrm,o_errinfo") A(0) = "AAAAA" A(1) = "BBBBB" A(2) = "CCCCC" ParmChar.text = A Set ParmChar = Parms.Append ("I_COL_CHAR", LCTYPE_TEXT) Set ParmNum = Parms.Append("I_COL_NUM", LCTYPE_INT) ParmNum.Value = 59 Set ParmDate = Parms.Append ("I_COL_DATE", LCTYPE_DATETIME) ParmDate.Text = Cdat("1999/01/01") count = Conn.Call (Parms, 1, Result) '出力パラメータ参照... Set o_sqlcode = Result.GetField (1) Set o_sqlerrm = Result.GetField (2) Set o_errinfo = Result.GetField (3) Print "エラーコード:" & o_sqlcode.Value(0) Print "エラーメッセージ:" & o_sqlerrm.Value(0) Print "エラー箇所:" & o_errinfo.Value(0) Exit Sub ErrorProc: Print Str(Err) & ":" & Error$ conn.Disconnect Exit Sub End Sub