- ベストアンサー
「OIP-04126:引数値は無効です。」エラーについて
ご教授ください! 環境 OS WinXP VB6,ORACLE ORACLEへの接続はOO4Oで行なっています。 VBからプロシージャーを実行させたいのですが パラメータを渡すために以下のようにしました。 Dim ora AsObject Set ora = oraParameter(パラメータ名) ora.put_Value パラメータ値, パラメータ配列番号 ところが「OIP-04126:引数値は無効です。」というエラーで落ちてしまいます。 調べては見ましたが原因がわかりません。 よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
////////// PL/SQL //////////////////////////////////////////////////// CREATE OR REPLACE FUNCTION PROC9999 ( PI_NUM IN NUMBER , PI_CHR IN VARCHAR2 ) RETURN NUMBER AS BEGNI END; ////////// VB //////////////////////////////////////////////////////// Public OraSec As Object Public OraDB As Object Set OraSec = CreateObject("OracleInProcServer.XOraSession") Set OraDB = OraSec.DbOpenDatabase("SQLNET", "UserID/Password", ORADB_DEFAULT) ^^^^^^ ^^^^^^ ^^^^^^^^ Const ExeCmd = "DECLARE ENDSTS NUMBER(1);BEGIN :ENDSTS := PROC9999(:PARA1,:PARA2);END;" Dim lv_ENDSTS As Variant Dim lv_PARA1 As Variant Dim lv_PARA2 As Variant '--- パラメータSet lv_PARA1 = 10 lv_PARA2 = "AAAAA" '--- パラメータ定義 With OraDB '(IN) .Parameters.Add "PARA1", lv_PARA1, ORAPARM_INPUT .Parameters("PARA1").ServerType = ORATYPE_NUMBER .Parameters.Add "PARA2", lv_PARA2, ORAPARM_INPUT .Parameters("PARA2").ServerType = ORATYPE_VARCHAR2 '(OUT) .Parameters.Add "ENDSTS", 0, ORAPARM_OUTPUT .Parameters("ENDSTS").ServerType = ORATYPE_NUMBER End With '--- PL/SQL Call OraDB.ExecuteSQL (ExeCmd) If Err = 0 Then '--- Status Check If OraSec.LastServerErr = ORALOB_SUCCESS Then lv_ENDSTS = OraDB.Parameters("ENDSTS").Value ******************************************** Else Debug.Print ">"; OraSec.LastServerErr, OraSec.LastServerErrText MsgBox "Procedure起動エラー", vbCritical, "Error!" ******************************************** End If Else MsgBox "VB-Error", vbCritical, "Error!" Debug.Print Err.Number, Err.Description ******************************************** End If '--- パラメータ開放 With OraDB .Parameters.Remove "PARA1" .Parameters.Remove "PARA2" .Parameters.Remove "ENDSTS" End With こんな感じです。
お礼
ありがとうございました。