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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロシージャを呼び出したプロ...
-
【HTML、VBScript】HTAアプリケ...
-
プロシージャまたは関数の引数...
-
演奏記号の・・・・
-
マウスポインタの変更
-
VBA テキストボックスで計算
-
VBA public変数はどのようなこ...
-
VBAで入力数値について
-
Excel ユーザーフォームで計算 ...
-
C#のループでtextboxに値を入れ...
-
チェックボックスを操作できな...
-
共有フォルダの「共有のアクセ...
-
VB6 ドラッグ&ドロップ
-
他のフォームから別のフォーム...
-
datagridview の任意の行に三...
-
Excel VBA: private sub 内の...
-
comboboxのクリックイベントに...
-
【VB.NET】テキストボックスに...
-
助けてください!
-
VB 保存・読み込み2
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB6.0】 あるフォームから他...
-
プロシージャまたは関数の引数...
-
定数を構造体で・・・
-
パーソナルXLSBのfuctionを呼び...
-
PL/SQLのプロシージャ間でカー...
-
プロシージャを呼び出したプロ...
-
【HTML、VBScript】HTAアプリケ...
-
【VBScript】変数のスコープ
-
VB6のFriendについて
-
HTML + VBScript で Sleep でき...
-
プログラムの素朴な質問です 分...
-
ExcelのVBA。Staticな変数について
-
Callで呼び出したプロシージャ...
-
変数の宣言はすべきでしょうか...
-
access2007 copyfile困っています
-
C++からfortran77を呼び出す
-
Excel VBA カーソルを当てた際...
-
BATファイルでstartからcallを...
-
SOP
-
整数を二つ読み込み、それらの...
おすすめ情報