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
No.1ベストアンサー
- 回答日時:
もしこのような状況で、プロシージャ名が全角であることが起因し、プロシージャ名の
変更が行えないなら、別プロシージャを作成してラップすればいいと思います。
また、こちらのように、プロシージャ名にパラメータまで設定しているなら外してください。
http://otn.oracle.co.jp/forum/message.jspa?messa …
この回答への補足
早くに回答ありがとうございます!
おっしゃるとおりに
・パラメータ指定
をしておりました。
プロシージャ名は、半角文字を使用しておりますので、
前者にはあたりませんが、
後者のパラメータ指定は、私の勉強不足にところになります。
今、パラメータを別情報で取り込みするようにして、
試している途中でいます。
まだ、正しく動作まで至っていませんが、
なんとかこぎつけたいと思います。
現時点では、
パラメータを1つ追加
パラメータ情報をどこかに格納(未だわかっていなくて・・・)
を考えています。
動作出来次第でご報告したく思います。
糸口がわかり助かりました。
本当にありがとうございます。
パラメータ指定し、設定後実行したら正常動作致しました。
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
本当にありがとうございます。
勉強不足を痛感致しました。
精進したく思います。
数日苦労してた点が解消できてほんとうれしいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/15 00:18
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- ファミレス・ファーストフード マクドナルドやケンタッキーフライドチキンは株主に株主優待券もらえますが、バーガーキング(BKジャパン 2 2023/03/15 00:39
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- 電子マネー・電子決済 楽天payの楽天キヤッシュを使用する場合 銀行をpaypay銀行(JCB)からチャージ 2 2022/08/06 06:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB6.0】 あるフォームから他...
-
VB6のFriendについて
-
定数を構造体で・・・
-
プログラムの素朴な質問です 分...
-
プロシージャまたは関数の引数...
-
PL/SQLのプロシージャ間でカー...
-
C#のループでtextboxに値を入れ...
-
二点の座標から距離や角度を求...
-
VB.NETでのイベントの途中終了
-
エクセルVBAでテキストボッ...
-
C言語のサフィックスについて
-
VBAでcallで呼び出したsubを終...
-
他のフォームから別のフォーム...
-
pthread_cond_waitとptherad_co...
-
VC++ (byte)(col & 0xFF) の意味
-
Pythonでのstrip()とsplit()の...
-
perlによるxmlファイルの取得
-
sublimit textっていうエディタ...
-
レコードセットにnullの場合
-
C言語で10行10列の行列式の値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムの素朴な質問です 分...
-
【VB6.0】 あるフォームから他...
-
定数を構造体で・・・
-
プロシージャまたは関数の引数...
-
Excel vba で複数のテキストの...
-
【VBScript】変数のスコープ
-
パーソナルXLSBのfuctionを呼び...
-
【HTML、VBScript】HTAアプリケ...
-
プロシージャを呼び出したプロ...
-
VB6のFriendについて
-
PL/SQLのプロシージャ間でカー...
-
ExcelのVBA。Staticな変数について
-
HTML + VBScript で Sleep でき...
-
整数を二つ読み込み、それらの...
-
プロシージャの引数の取り得る...
-
Excel VBA カーソルを当てた際...
-
subを連続で実行する
-
三項でたとえば交換って
-
VBA public変数はどのようなこ...
-
C#のループでtextboxに値を入れ...
おすすめ情報