• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010からPROCEDUREを実行でエラー)

VB2010からPROCEDUREを実行でエラー

このQ&Aのポイント
  • VB2010を使用してOracleのプロシージャを呼び出そうとした際にエラーが発生しています。
  • エラーメッセージはORA-06550:行1、列7:PLS-00801:内部エラー[22503]です。
  • VB2010からOracleのプロシージャを実行するためのコード例を提供しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14093&forum=7 もしこのような状況で、プロシージャ名が全角であることが起因し、プロシージャ名の 変更が行えないなら、別プロシージャを作成してラップすればいいと思います。 また、こちらのように、プロシージャ名にパラメータまで設定しているなら外してください。 http://otn.oracle.co.jp/forum/message.jspa?messageID=28015837�

mevius_0127
質問者

お礼

パラメータ指定し、設定後実行したら正常動作致しました。 Public Function ORA_EXECUTE(ByVal IN_PROCEDURE As String, ByVal IN_CKAINCD As String, ByVal IN_VRIREKIKBN As String, ByVal IN_VFUNCNM As String) As Boolean ' データ格納領域の初期化 Dim v_return_flg As Boolean Dim Ora_Cnn_bk As OracleConnection Dim Ora_Cmd_bk As OracleCommand ' Oracle接続情報の初期化 Ora_Cnn_bk = New OracleConnection Ora_Cmd_bk = New OracleCommand ' Oracleへのコネクションの確立 Ora_Cnn_bk.ConnectionString = "User Id=AAMAIN; Password=AAMAIN3; Data Source=AAORCL" & "; Pooling=false" Ora_Cnn_bk.Open() v_return_flg = False Try Dim oPARM_INPUT = ParameterDirection.Input Dim oTYPE_CHAR As OracleDbType = OracleDbType.Char 'バインド変数のセット Ora_Cmd_bk.Parameters.Add("P_CKAINCD", oTYPE_CHAR) Ora_Cmd_bk.Parameters("P_CKAINCD").Value = IN_CKAINCD Ora_Cmd_bk.Parameters("P_CKAINCD").Direction = oPARM_INPUT Ora_Cmd_bk.Parameters("P_CKAINCD").OracleDbType = oTYPE_CHAR Ora_Cmd_bk.Parameters.Add("P_VRIREKIKBN", oTYPE_CHAR) Ora_Cmd_bk.Parameters("P_VRIREKIKBN").Value = IN_VRIREKIKBN Ora_Cmd_bk.Parameters("P_VRIREKIKBN").Direction = oPARM_INPUT Ora_Cmd_bk.Parameters("P_VRIREKIKBN").OracleDbType = oTYPE_CHAR Ora_Cmd_bk.Parameters.Add("P_VFUNCNM", oTYPE_CHAR) Ora_Cmd_bk.Parameters("P_VFUNCNM").Value = IN_VFUNCNM Ora_Cmd_bk.Parameters("P_VFUNCNM").Direction = oPARM_INPUT Ora_Cmd_bk.Parameters("P_VFUNCNM").OracleDbType = oTYPE_CHAR 'ストアドプロシージャ実行 Ora_Cmd_bk.CommandType = CommandType.StoredProcedure Ora_Cmd_bk.CommandText = IN_PROCEDURE Ora_Cmd_bk.Connection = Ora_Cnn_bk Ora_Cmd_bk.ExecuteNonQuery() v_return_flg = True Catch ex As Exception MessageBox.Show("PROCEDURE(" + IN_PROCEDURE + "('" & IN_CKAINCD & "','" & IN_VRIREKIKBN & "','" & IN_VFUNCNM & "'))" + Chr(13) + ex.Message, "確認", MessageBoxButtons.OK) Finally ' コネクションを閉じる Ora_Cnn_bk.Close() ' Oracle接続情報のクリア Ora_Cnn_bk = Nothing Ora_Cmd_bk = Nothing End Try ' データ返却 Return v_return_flg End Function 本当にありがとうございます。 勉強不足を痛感致しました。 精進したく思います。 数日苦労してた点が解消できてほんとうれしいです。

mevius_0127
質問者

補足

早くに回答ありがとうございます! おっしゃるとおりに  ・パラメータ指定 をしておりました。 プロシージャ名は、半角文字を使用しておりますので、 前者にはあたりませんが、 後者のパラメータ指定は、私の勉強不足にところになります。 今、パラメータを別情報で取り込みするようにして、 試している途中でいます。 まだ、正しく動作まで至っていませんが、 なんとかこぎつけたいと思います。 現時点では、  パラメータを1つ追加  パラメータ情報をどこかに格納(未だわかっていなくて・・・) を考えています。 動作出来次第でご報告したく思います。 糸口がわかり助かりました。 本当にありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A