VB.Netからストアドプロシージャを実行するプログラムの書き方がよく分かりません。
データベースはOracleです。
PROCEDURE test(aaa IN number, bbb IN varvhar2, ccc IN OUT varchar2);
といったPL/SQLをVB.NET上で実行するとします。
(略:データベースへの接続処理)
strSql = "begin test(10, 'テスト', '');end;"
結果「式が割り当てられていません」とエラーが出ます。
すべての引数がINのプロシージャでは、上記の方法で実行できたので、IN OUTへの引数の渡し方に問題があると思うのですが、どうしても分かりません。
まだ使い始めたばかりで、どうしていいかまったく分からない状態です。
どうかご指導お願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは、じゃんぬねっと です。
流れとしては、
・OracleCommand のインスタンスを正しく生成。
・CommandText に、プロシージャ名を設定する
・CommandType に、CommandType.StoredProcedure を設定。
・Parameters にパラメタを Add する。
・初期値を Value に設定する
・ExecuteNonQuery あたりを実行。
・オブジェクトの解放
この回答への補足
返信ありがとうございます。
以下の方法で試してみました。
Dim con As New OracleConnection
Dim cmd As OracleCommand
cmd = New OracleCommand("test", con)
cmd.CommandType = CommandType.StoredProcedure
Dim aaa As OracleParameter = _
cmd.Parameters.Add("aaa", OracleDbType.Int32,ParameterDirection.Input)
acc.Value = 10
Dim bbb As OracleParameter = _
cmd.Parameters.Add("bbb", OracleDbType.Varchar2,ParameterDirection.Input)
acc.Value = "テスト"
Dim ccc As OracleParameter =
cmd.Parameters.Add("ccc", OracleDbType.Varchar2,255,DBNull.Value,ParameterDirection.InputOutput)
ccc.Value = ""
cmd.ExecuteNonQuery()
cmd.Dispose()
実行の結果、"列に格納する値が大きすぎます"でエラーになります。
何のサイズのことを指しているのか、よく分かりません。
書き方以外でも見落としている箇所がございましたら、よろしくお願い致します。
補足ですが、OracleへはODP.NETで接続しています。
解決しました!
列の大きさはデータベース側の問題で、そちらを調べてみることでうまくいきました。
データベース自体もまったく理解ができていなかったので、じゃんぬねっとさんには丁寧に流れを教えていただいて感謝しています。
いろんなエラー出したので、少しだけ分かりかけてきました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
VBでストアドの戻りパラメータを受け取る方法
Visual Basic(VBA)
-
カーソル宣言をIFで分けられませんか?
Oracle
-
-
4
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
5
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
6
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
7
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
これってパソコンの最適化が完...
-
タイマーがうまく動かない
-
python。pipでパッケージをイン...
-
[teraterm] waitコマンドで停止...
-
コマンドプロンプトをウインド...
-
Windows System32 Security Hea...
-
vbscriptを用いて他のVBSファイ...
-
VBAを時間指定で自動実行
-
実行中のログをフォームのテキ...
-
.NETからストアドプロシージャ...
-
バッチファイルが不正終了して...
-
バッチファイル実行時のプロン...
-
シェルで5分前の時間を取得したい
-
バッチファイルでクリップボー...
-
シェルスクリプトを実行したい
-
GDI+でやっとgng絵を出せたので...
-
pythonスクリプトを管理者権限...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
エクセル フォルダの画像を画...
-
Excel VBA ステップインが途中...
-
PDFファイルを開き、印刷し、閉...
-
バッチファイルで以下のような...
-
VBScriptでコマンドプロンプト...
-
VScodeのエラー解決法 Pythonの...
-
バッチファイルが不正終了して...
-
複数のbatファイルを自動実行し...
-
これってパソコンの最適化が完...
-
pythonスクリプトを管理者権限...
-
VBS実行時にコマンドプロンプト...
-
ネットワーク名が見つかりません
-
メッセージを他のPCに出したい
-
VB.NETでのDOSコマンドを実行に...
おすすめ情報