2009-09-02 11 views
1

JavaアプリケーションからPL/SQLプロシージャをコールする必要があります。私はJDBCでそれを行うことができます。しかし問題は、手順が "PL/SQL Web Toolkit"とそのパッケージ(htp、owa _ util、owa _ cookie、...)を使用していることです。私がそれらを呼び出すと、次のようないくつかの例外が発生します。JavaからPL/SQL Web Toolkitプロシージャを呼び出す

Exception in thread "main" java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error 
ORA-06512: at "SYS.OWA_UTIL", line 323 
ORA-06512: at "SYS.HTP", line 859 
ORA-06512: at "SYS.HTP", line 974 
... 

これらの手順をJavaパッケージなどを使って呼び出すことはできますか?

この手順は変更できませんが、作成することはできません。

ありがとうございました。

+0

StatementのexecuteQuery()メソッドを使用してプロシージャを呼び出していますか? – DigitalRoss

+0

まあまあです。 CallableStatementのexecute()メソッドを使用します。このクラスはStatementのサブインターフェースです。 – sinuhepop

答えて

2

htfとhtpは、いくつかのことが前もって設定されると想定しています。これは、コールがmod_plsqlのようなPL/SQLゲートウェイを通過すると自動的に実行されます。しかし、手動で行うこともできます。

成功しHTP & HTFを使用するにはAsk Toad wiki

に良い説明あります、あなたはカップルの変数を定義し、CGI環境を初期化する必要があります。

+0

これは完璧な解決策です!私はこれで今作業します。どうもありがとうございました! – sinuhepop

0

エラーメッセージは、間違ったデータ型の引数を渡しているか、結果を間違ったデータ型の変数に代入していることを意味します。コード、特に割り当てを再確認する必要があります。あなたはここにあなたのコードを投稿することができます:私はSOの脳の1つが問題を見つけることができると確信しています。

ちなみに、OWA_UTILのどのメソッドを呼び出していますか?

+0

あなたの答えをありがとう。プロシージャの引数が正しいと確信しています。問題は、一部のシステムオブジェクトが作成/初期化されていないことが原因と考えられます。 コールスタックは MyMethod - > SYS.PRINT( 'Hello world!') - > SYS.PRN( 'Hello World') - > OWA_UTIL.GET_CGI_ENV( 'GATEWAY_IVERSION') – sinuhepop

0

ここでは、サンプルコードを使用すると、ストアドプロシージャに変数を渡す必要がある場合は、ここでのテストはJavaの「コール可能文」.Also経由で呼び出されている保存された機能です

   CallableStatement stmt = conn.prepareCall("? = call test(?)"); 
       stmt.registerOutParameter(1, OracleTypes.INTEGER); 
       stmt.setString(2, "callIndex"); 
       stmt.execute(); 
       Integer outputValue = stmt.getInt(1); 

---あなたがそれを行うことができます方法ですoracleの関数を使用する場合は、OracleTypesに正しい変数を渡す必要があります。

関連する問題