![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?e8efa67)
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
VBでストアドの戻りパラメータを受け取る方法
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
5
javascriptからサーバサイドの処理を呼び出す方法を教えてくださ
JavaScript
-
6
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
-
exeファイルを実行するとコマン...
-
vbscriptを用いて他のVBSファイ...
-
バッチファイルの内容を表示さ...
-
ネットワーク名が見つかりません
-
[teraterm] waitコマンドで停止...
-
VBA 既に開いているBookに継続...
-
VBscriptが起動しない?
-
「読み取りと実行」と「読み取...
-
VScodeのエラー解決法 Pythonの...
-
シェルで5分前の時間を取得したい
-
エクセル フォルダの画像を画...
-
VBS実行時にコマンドプロンプト...
-
PDFファイルを開き、印刷し、閉...
-
Accessの最適化について DBengi...
-
ホームページのリンクからプロ...
-
バッチで実行するVBScriptから...
-
gccのプロファイラで時間が取得...
-
Windows 8.1でRS-232Cが使用で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
「読み取りと実行」と「読み取...
-
[teraterm] waitコマンドで停止...
-
バッチファイルで以下のような...
-
バッチファイルの内容を表示さ...
-
PDFファイルを開き、印刷し、閉...
-
エクセル フォルダの画像を画...
-
これってパソコンの最適化が完...
-
バッチファイルが不正終了して...
-
ネットワーク名が見つかりません
-
シェルで5分前の時間を取得したい
-
pythonスクリプトを管理者権限...
-
Excel(エクセル) VBA プロシー...
-
複数のbatファイルを自動実行し...
-
Excel VBA ステップインが途中...
-
メッセージを他のPCに出したい
-
16進数の変換処理
-
VB.NETでのDOSコマンドを実行に...
おすすめ情報