- PR -

SQLPlusだと通るSQLがJavaだと通らない

1
投稿者投稿内容
har
会議室デビュー日: 2004/02/06
投稿数: 2
投稿日時: 2004-02-06 21:26
j2sdk1.4.2.03+tomcat4.1.24+oracle9iの環境で構築しております。
JDBCでデータソースを使っています。

ORACLE SQLPlusで通るSQL文がjavaのプログラムを通して呼び出すと

ORA-01009: 必須パラメータがありません。
というエラーがtomcatのlogに吐き出されます。

Statement stmt= conn.createStatement();
ResultSet rset = stmt.executeQuery(sql);←ここは通ります。
if(rset.next()) ←ここでデバッカーが止まる

という状態になってしまいます。

またPreparedStatementでResultSetを取得しても
同じ状況になってしまいます。(この場合はtomcatのlogにnullとだけ吐き出される)

また全部のSQLがおかしいわけではなく、
あるテーブルを使うとこのエラーが起きてしまいます。

原因がまったくわからず困っています。

どうかご教授お願いします。

おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-02-06 22:31
引用:

ORA-01009: 必須パラメータがありません。
というエラーがtomcatのlogに吐き出されます。


むしろ、このエラーコードからエラーの内容を調べてみたらいかがですか?
har
会議室デビュー日: 2004/02/06
投稿数: 2
投稿日時: 2004-02-07 19:32
引用:
--------------------------------------------------------------------------------
むしろ、このエラーコードからエラーの内容を調べてみたらいかがですか?

--------------------------------------------------------------------------------

返信ありがとうございます。

OTNでエラーコードから内容を調べたのですが、読んで字のごとくといった感じのこと
しか書かれていませんでした。
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2004-02-07 20:23
まったくの思いつきですが。

問題のあるテーブルとその他のテーブルの所有者の違い、テーブルのオブジェクト権限、SQL*Plus で動作を確認した時のOracle ユーザが持つシステム権限を確認されてみてはいかがでしょうか。
ORA-01009 になるかどうかはわかりませんが、SQL*Plus で動作する SQL がアプリケーションサーバを経由すると動作しないというケースでは、権限の違いがかなり高い確率で疑わしいと思います。

[ メッセージ編集済み 編集者: Gio 編集日時 2004-02-07 20:26 ]
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-02-08 10:20
引用:

問題のあるテーブルとその他のテーブルの所有者の違い、テーブルのオブジェクト権限、SQL*Plus で動作を確認した時のOracle ユーザが持つシステム権限を確認されてみてはいかがでしょうか。


SQL*Plusで接続する際に用いているOracleのユーザと、JDBC接続で用いているユーザの
違いということでしょうか?確かにそこは盲点でした。ありうる話ですね。
一風
会議室デビュー日: 2006/01/04
投稿数: 1
投稿日時: 2008-03-31 20:06
ORA-01009: 必須パラメータがありません。
というエラーが出る原因のひとつに、
「全角の空白文字」が、SQL文に含まれている時に発生する。
という事がありました。
※参考までに…
1

スキルアップ/キャリアアップ(JOB@IT)