※ ChatGPTを利用し、要約された質問です(原文:VB2010からPROCEDUREを実行でエラー)
VB2010からPROCEDUREを実行でエラー
このQ&Aのポイント
VB2010を使用してOracleのプロシージャを呼び出そうとした際にエラーが発生しています。
エラーメッセージはORA-06550:行1、列7:PLS-00801:内部エラー[22503]です。
VB2010からOracleのプロシージャを実行するためのコード例を提供しています。
VB2010を使っています。
Oracleのプロシージャを呼び出しするのですが、
以下のエラーが出て困っています。
ORA-06550:行1、列7:
PLS-00801:内部エラー[22503]
ORA-06550:行1、列7:
PL/SQL:Statement ignored
実際のPG
Public Function ORA_EXECUTE(ByVal strSQL 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=(ユーザ名); Password=(パスワード); Data Source=(接続文字列)" & "; Pooling=false"
Ora_Cnn_bk.Open()
v_return_flg = False
Try
Dim oTYPE_CHAR As OracleDbType = OracleDbType.Char
Dim oPARM_OUTPUT = ParameterDirection.Output
'バインド変数のセット
Ora_Cmd_bk.Parameters.Add("AAA", oTYPE_CHAR)
Ora_Cmd_bk.Parameters("AAA").Value = " "
Ora_Cmd_bk.Parameters("AAA").Direction = oPARM_OUTPUT
Ora_Cmd_bk.Parameters("AAA").OracleDbType = oTYPE_CHAR
'ストアドプロシージャ実行
Ora_Cmd_bk.CommandType = CommandType.StoredProcedure
Ora_Cmd_bk.CommandText = strSQL
Ora_Cmd_bk.Connection = Ora_Cnn_bk
Ora_Cmd_bk.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("SQL(" + strSQL + ")" + 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
Oracle側のプロシージャは、別PGで使用していて
C++からアクセスし使える状態です。
お分かりになる方教えてください。
m(_ _)m
お礼
パラメータ指定し、設定後実行したら正常動作致しました。 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 本当にありがとうございます。 勉強不足を痛感致しました。 精進したく思います。 数日苦労してた点が解消できてほんとうれしいです。
補足
早くに回答ありがとうございます! おっしゃるとおりに ・パラメータ指定 をしておりました。 プロシージャ名は、半角文字を使用しておりますので、 前者にはあたりませんが、 後者のパラメータ指定は、私の勉強不足にところになります。 今、パラメータを別情報で取り込みするようにして、 試している途中でいます。 まだ、正しく動作まで至っていませんが、 なんとかこぎつけたいと思います。 現時点では、 パラメータを1つ追加 パラメータ情報をどこかに格納(未だわかっていなくて・・・) を考えています。 動作出来次第でご報告したく思います。 糸口がわかり助かりました。 本当にありがとうございます。