2016-08-16 172 views
1

私はPLSQL関数を持っています。 PKG_GAS_KT.GET_DEPTINFO( '{UserID}')この関数は、ユーザーが所属するDepartmentの名前を返します。JavaからPLSQL関数を呼び出す方法

今、私はJavaでUserIDのリストを持っています。どのように私はUserIdのすべてを渡し、それぞれのユーザーの部門を取得することができます。 forループの中に入れて、データベースへの望ましくない呼び出しを行うことなく実行する方法はありますか?また:

CallableStatement callSt = con.prepareCall("{?= call PKG_GAS_KT.GET_DEPTINFO(?)}");`// Is this correct way to call my PLSQL function? 
    callSt.setInt(1,101); 
    callSt.registerOutParameter(2, Types.STRING); 
    callSt.execute(); 
    Double output = callSt.getString(2); 

ご了承ください。 PLSQL関数で何も変更できません。

+0

「再帰的」という単語を正しく使用していません... – ControlAltDel

+0

[パス配列をOracleプロシージャに渡す]可能性があります(http://stackoverflow.com/questions/5198856/pass-array- to-oracle-procedure) – OldProgrammer

+0

ControlAltDeleteを実行しました。ありがとう。 @OldProgrammer PLSQL関数では何も変更できません。私はアクセスしていない。 – Kid101

答えて

1

PL/SQL関数を変更する方が良い。しかし、あなたが本当にその場しのぎを必要とする場合、あなたはこの試みることができる:

発行JDBCクエリとしてJavaから次の文:

select ids.column_value id, 
     pkg_gas_gt.get_deptinfo(ids.column_value) deptinfo 
from TABLE(SYSTEM.NUMBER_TBL_TYPE(?)) ids; 

を... ?はあなたのパラメータであり、のJDBC配列です

クエリの結果セットは、関数の結果とともに各IDになります。これを機能させるには、関数をSQLから呼び出し可能にする必要があります。しかし、ほとんどがあります。

+0

ありがとうございます。私はPLSQLの初心者ですが、2日間で多くのことを学びました。ありがとう。 – Kid101

関連する問題