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への引数の渡し方に問題があると思うのですが、どうしても分かりません。

まだ使い始めたばかりで、どうしていいかまったく分からない状態です。
どうかご指導お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (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で接続しています。

補足日時:2005/04/19 17:08
    • good
    • 0
この回答へのお礼

解決しました!
列の大きさはデータベース側の問題で、そちらを調べてみることでうまくいきました。
データベース自体もまったく理解ができていなかったので、じゃんぬねっとさんには丁寧に流れを教えていただいて感謝しています。
いろんなエラー出したので、少しだけ分かりかけてきました。
ありがとうございました!

お礼日時:2005/04/19 21:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qスト2アニバーサリーエディションで豪鬼

スト2アニバーサリーエディションで、豪鬼の出し方を教えてください!

Aベストアンサー

次の手順で出るそうです。

1. キャラクター選択画面で「SUPERX」を選択
2. カーソルを以下のキャラクターに合わせ、それぞれで約1秒(体感でゆっくり1秒以上がよい)止める。
3. リュウ→T.ホーク→ガイル→キャミィ→リュウ
4.スタートボタンを押して1秒以内に、弱・中・強パンチを同時押しする。

家庭用だと、説明書に書いてあるそうです。

QVB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という
エラーメッセージが出てしまいます。

windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、
どうもダメみたいで困っています。

解決方法などご存知の方がいらっしゃいましたら、
ご教授いただけると大変助かります。

よろしくお願いいたします。

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

...続きを読む

Aベストアンサー

Exeで使用しているiniファイルやtlbファイルを最新のに置き換えて、もう一度regasmコマンドで登録してみてはいかがでしょう。

Q豪鬼vsルガール(各種)

豪鬼とルガールどちらが強いですか
・豪鬼(ノーマル) vs ルガール(ノーマル)
・神人豪鬼vsゴッドルガール
・神人豪鬼vsオメガルガール
・神人豪鬼vs真豪鬼
・ゴッドルガールvs真豪鬼
・ゴッドルガールvsオメガルガール
・真豪鬼vsオメガルガール

Aベストアンサー

豪鬼の設定は、攻撃力過多でその分防御力が低い場合が多い。特に気絶しやすいとか。
ルガールはSNK系のゲームらしく、カウンタ時のダメージがゲームバランスを壊す
レベルになる。

まあ、超必ゲージを溜めてから先に当てた者勝ちになるかかな。また、キャラ設定が
強いのか、キャラ性能が強いのかは全く別の意味になります。で、質問しているのは
どっち? 対戦する場合、ルガールの方が初心者には使いやすいでしょうな。
ただ、あんなもん使っても面白くも何ともないと思われますが。

細かいバージョンの違いについては知らんw

QVBで作成したパッケージを実行すると実行時エラー'429'が発生してしまいます。

VBにてcsvファイルのデータをOracleデータベースにinsert、updateするプログラムを作成し、開発パソコンにて正常に動作することを確認しました。

開発パソコン
・Windows2000 Server(SP3)
・Visual Basic 6.0 Enterprise Edition
・Oracle 9i

本番パソコン
・Windows2000 Server(SP3)
・Oracle 9i

テストパソコン
・Windows2000 Professional(SP1)

今、上記のように3台のパソコンがあります。
開発パソコンで開発したVBのプログラムをコンパイルしてexeを作成し、開発パソコン上から開発パソコン上のオラクルに対してプログラムを実行すると正常に動作します。
本番パソコンには、Visual Basicをインストールしていないため、プログラムを実行できるようにするには開発パソコンにてディストリビューションウィザードを使ってセットアッププログラムを作成し、本番パソコンにインストールする必要があると思います(質問1.ここまでは正しいですよね??)。

そこでウィザードに沿ってセットアッププログラムを作成し、まずはテストパソコンにてインストール後に実行してみたのですが、エラーが出てしまいました。
「実行時エラー'429' ActiveX コンポーネントはオブジェクトを作成できません。」

質問2.どうすればエラーが発生することなくプログラムを実行できるようになるでしょうか?
テストパソコンにオラクルクライアントが必要?それとも何かDLLの更新などが必要?

もしおわかりの方いらっしゃいましたら教えて下さい。
よろしくお願いします。

VBにてcsvファイルのデータをOracleデータベースにinsert、updateするプログラムを作成し、開発パソコンにて正常に動作することを確認しました。

開発パソコン
・Windows2000 Server(SP3)
・Visual Basic 6.0 Enterprise Edition
・Oracle 9i

本番パソコン
・Windows2000 Server(SP3)
・Oracle 9i

テストパソコン
・Windows2000 Professional(SP1)

今、上記のように3台のパソコンがあります。
開発パソコンで開発したVBのプログラムをコンパイルしてexeを作成し、開発パソコン上から開発パソ...続きを読む

Aベストアンサー

>テストパソコンにオラクルクライアントが必要?
ん?クライアントにオラクルが入っていないのですか?

各クライアントのオラクルドライバはどうしているのか、ふと疑問を感じたんですが^^;

バージョンを問わない対応をするには、参照設定からはずし、AS OBJECTでコネクションを張ってあげたら消える場合もあるけど、何となくそれ以前の問題のような気がするのは、わたしだけでしょうか?

QストリートファイターZERO3の真・豪鬼について

真・豪鬼を自分で使用したいのですが
どうしたら良いでしょうか?

Aベストアンサー

>追加の質問ですが総プレイ時間とはワールドツワーモード以外のモード
>(アーケードモード、トレーニングモード等)でのプレイ時間も
>含まれるのでしょうか?

これは自分で試したわけではないのですが、ただ電源を入れている時間だけで良いそうです。


>私の場合、上記の条件を満たしていて、
>キャラ選択画面でL2を押しながら豪鬼を選択したのですが
>真豪鬼にはなりませんでした。

ワールドツアーモードをクリアしてから、電源を切ったりリセットボタンを押したりしなかったでしょうか。私自身経験がありますが、ワールドツアーモードで真・豪鬼を倒した直後でないと、真・豪鬼は選択できなかったと思います。(新たに電源を入れなおした場合だと、普通の豪鬼が選択されてしまいます。)

それでも選択できなかった場合は、もう一度最初からワールドツアーモードをやり直して同様の方法を試してみてください。

これでも選択できない場合は、もうギブアップです。すいません・・・(確かに選択できたはずなのですが・・・)

QVB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

VB で =Right([nendo],2) & "/06" はどういう事ですか?Right([nendo],2)は?

Aベストアンサー

&="&"
&="""
=Right([nendo],2) & "/06&quot  -> =Right([nendo],2) & "/06"
[nendo]はアクセスのフィールド名か(アクセスのVBA?)。[]で囲むから。
中身は、#2でご指摘の年度で2007とかは行っているのでしょう。
Right関数は文字列の右側、最後から文字数を指定して切り出す。
&は文字列を結合する演算子。
/06をこの順序で結合するもの。

QPS4ストリートファイターⅤに豪鬼を含む6キャラ?が追加されたようですが、Playstationst

PS4ストリートファイターⅤに豪鬼を含む6キャラ?が追加されたようですが、Playstationstoreから購入するのでしょうか?詳しい方教えて下さい。

Aベストアンサー

初めからPlayStation Storeから検索して買うか、スト5のゲーム内の「SHOP」からPlayStation Storeに飛んで買うこともできます

どちらにしても購入はPlayStation Storeになります

新キャラがまとめて欲しいならシーズンパスがおすすめです

自分はそんなに使わないので豪鬼といぶきとガイルだけ買いましたが、結局シーズンパスの方が良かったかな?といった感じです

1キャラ600円なので6人+追加コスチュームなど六千円ぐらいかかりますが、シーズンパスなら3000円で買えるので、色んなキャラで遊びたいならシーズンパスがお得です

念のためですが、プレイしていれば手に入るファイトマネーでも一応買うことができますが、そんなに簡単に貯まるものではないのであまり現実的ではありません

あと、追加キャラを購入しなければそのキャラとのCPU対戦が出来ないので、オンライン対戦の場合に購入していないキャラと当たった時がしんどいですね

ソフトだけでも高いのに、今後もちょくちょくキャラが追加されてその度に課金するのが何かしっくりこないので自分も悩んでいる所です

初めからPlayStation Storeから検索して買うか、スト5のゲーム内の「SHOP」からPlayStation Storeに飛んで買うこともできます

どちらにしても購入はPlayStation Storeになります

新キャラがまとめて欲しいならシーズンパスがおすすめです

自分はそんなに使わないので豪鬼といぶきとガイルだけ買いましたが、結局シーズンパスの方が良かったかな?といった感じです

1キャラ600円なので6人+追加コスチュームなど六千円ぐらいかかりますが、シーズンパスなら3000円で買えるので、色んなキャラで遊びたいならシー...続きを読む

QExcelVBAから,引数を渡してVBscriptを実行したいのですが,こんなこと出来ますか?

ExcelVBAでワークシートを監視している状態で,VBscriptを実行して,IEを操作したいと考えています。ただ,このとき,監視していたワークシートの中の数値を引数としてVbscriptに渡したいと考えています。このようなことが出来るのでしょうか?出来るのであれば教えてください。

もし,引数として渡すことが出来ないのであればVBscriptの方から,ワークシートのセルを読みに行かせるという方法もあると思うのですが,VBAの方でワークシートの値を更新するので,VBAとVBscriptの両方が同時に同じセルを操作したりすると,不具合が起こったりするのではないかと心配です。ですから,ワークシートの読み書きはVBAにやらせて,VBAから,引数のようにして必要なデータをVBscriptに渡せないかと考えています。

しかし,エラー処理などをして,上記の不具合が解消できるのであれば,引数で渡すのではなく,ワークシートを読みに行く形でも良いのかなと思っていますが,そうすると,VBscriptで既に開いているワークシートを特定して,所定のエクセルシートを操作できるようにしなければなりません。その際の具体的な方法等が分れば,教えていただきたいです。(UWSCでいうところの,getactiveoleobject?みたいなのがあれば,それを中心に,サンプルコードを御提示いただきたいです。)

どうか,よろしくお願いします。

ExcelVBAでワークシートを監視している状態で,VBscriptを実行して,IEを操作したいと考えています。ただ,このとき,監視していたワークシートの中の数値を引数としてVbscriptに渡したいと考えています。このようなことが出来るのでしょうか?出来るのであれば教えてください。

もし,引数として渡すことが出来ないのであればVBscriptの方から,ワークシートのセルを読みに行かせるという方法もあると思うのですが,VBAの方でワークシートの値を更新するので,VBAとVBscriptの両方が同時に同じセルを操作した...続きを読む

Aベストアンサー

Wscript Arguements について調べてみてください。
https://msdn.microsoft.com/ja-jp/library/cc364473.aspx
のVBScriptを、Q.vbs とかの名前で保存します。
Excel VBA からは
Shell "wscript.exe C:\test\Q.vbs ""aa"" "" bb"
などと実行すると、aa bb が渡されて aaとbbが返ってきます。

QZERO3の真・豪鬼

の瞬極殺を交わす方法を教えてください、具体的にどのような場合かというと
起き上がり重ねられると対空を出す前に攻撃を受けます、

Aベストアンサー

倒れてるときからレバー上に入れ続けて

ジャンプで避けられないかな?

QVB2010からPROCEDUREを実行でエラー

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

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...続きを読む

Aベストアンサー

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14093&forum=7

もしこのような状況で、プロシージャ名が全角であることが起因し、プロシージャ名の
変更が行えないなら、別プロシージャを作成してラップすればいいと思います。

また、こちらのように、プロシージャ名にパラメータまで設定しているなら外してください。
http://otn.oracle.co.jp/forum/message.jspa?messageID=28015837&#28015837


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報