- ベストアンサー
oo4oのexecuteSQLでupdate実行後の実行件数を取得方法は?
- oo4oを使用してオラクルDBに接続し、executeSQLメソッドによりupdate処理を実行した場合、実行結果の件数を知りたい場合はどうすれば良いかについて教えてください。
- Javaの場合は戻り値として実行結果の件数が返ってくるため簡単ですが、oo4oのexecuteSQLメソッドではどのように実行結果の件数を取得するのか分からないです。
- また、where句に当てはまるレコードが無い場合でも処理が成功としてエラーが出ないため、実行結果の件数を取得する方法が必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>result = OraDB.ExecuteSQL sql '☆1 括弧がありませんねぇ(^^; result = OraDB.ExecuteSQL(sql)
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>実行すると「構文エラー」・・・ うーん、構文エラーって納得いきませんねぇ。 どんなコードかいてますか?
お礼
ホント、単純なコードなんですが、以下抜粋です。 ---- Dim OraSession As Object Dim OraDB As Object Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDB = OraSession.DbOpenDatabase(DB_TNSNAME, DB_USERNAME & "/" & DB_PASS, 0&) Dim result As Integer Dim sql As String sql = "update ~(省略) " OraSession.BeginTrans result = OraDB.ExecuteSQL sql '☆1 OraSession.CommitTrans ---- この☆1の部分の「result = 」を消すとうまく行くんですが、これがあると、エディタの時点で赤くなってしまっています。。resultの型が間違っているのかと色々試したんですが、ダメでした。☆1の行の「result = 」を消し、その次の行に「result= OraDB.GetRowsProcessed」を入れても、「オブジェクトは、このプロパティまたはメソッドをサポートしていません」と出てしまいます。。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>うーん,IntegerでもLongでも試してみたんですけど、コードエディタの時点で赤くなってしまって、実行すると「構文エラー」・・・ もしかして、タイプライブラリを参照設定していますか? oo4o、タイプライブラリ使うとたまに変な動きをしたような・・・
お礼
タイプライブラリの参照設定はしてありました。 一応外して試してみたんですが、どの方法でも結局おなじエラーになってしまいますね。。 それにしてもAccessの参照設定ってなんでこんなに分かりにくいんだろう…なにがなんだか。。 ありがとう御座いました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
ExecuteSQLメソッドの戻り値
お礼
あは、そのまんまですかw Integerの変数に戻り値を入れようとしたらエラーになったんで、てっきり戻り値が無いのかと思ってました。型が違うだけで、早とちりしていたということですね;;試してみます。ありがとうございました。
補足
うーん,IntegerでもLongでも試してみたんですけど、コードエディタの時点で赤くなってしまって、実行すると「構文エラー」・・・ OraDBに対して、GetRowsProcessedというメソッドも試してみたのですが、まったく同じで、サポートされていないということでした。 これはoo4oのバージョン(8.1.5.3.4)なども関係してくるのでしょうかね・・? ネットで探すと、実行結果の件数が戻り値として戻ってくるという話もあり(→×)、GetRowsProcessedで件数が取れるという話もあり(→×)、またoo4oのヘルプでは「操作の正常な終了(OSUCCESS)または失敗(OFAILURE)を示すoresultを戻します。」とあるので、これでは件数は取れないです。。 もし何かアドバイスありましたらどなたか引き続きよろしくお願いします・・。
お礼
ええー。それですか? 「result = 」が無ければカッコ無しでも通るんですよ。。?
補足
ビンゴでした。かっこつけたらちゃんと動きました。ありがとう御座います。 ・・・っていうか、なにこの言語・・