2

Oracleでユーザータイプを作成しました

create or replace type my_friend_list 
is
table of 
varchar2(100);

今、私はこのような出力パラメータを持つプロシージャを書きました:

  PROCEDURE friends_diff_prc
  (
   my_name IN VARCHAR2,
   friend_i   IN my_friend_list ,
   good_friend_o   OUT my_friend_list ,
   best_friend_o   OUT my_friend_list ,
   isSuccess         OUT NUMBER 
  );

私はそれを実行しますSQLDeveloperそしてそれは正しく実行されています。

そして、それは私の良い友達と親友の両方のリストを私に与えています。

しかし、私が拡張しているJAVAクラスを介してそれを呼び出しているときStoredProcedure

best_friendリストは正しく来ていますが、good_friendリストについては印刷しています

Ljava.lang.Object;@24342434, 
Ljava.lang.Object;@243a243a,
Ljava.lang.Object;@24402440,
Ljava.lang.Object;@24462446

この出力配列リストをフェッチするための私のJavaコードは次のようになります。

List<String> goodfriends = Arrays.asList((String[]) results.get("good_friend_o");
List<String> bestfriends = Arrays.asList((String[]) results.get("best_friend_o");

good_friendsに正しい結果が得られないのはなぜですか?

前もって感謝します。

4

2 に答える 2

0

答えを文字列の配列として取得し、リストの文字列に格納します。String[]を文字列に直接格納することはできません。

フェッチして印刷するためのJavaコードを投稿できますか...

于 2012-09-21T11:42:23.350 に答える
0

このコードを試してください。これにより、文字列が出力されます

System.out.println("Printing goodfriends");
for (Object object : goodfriends) {
    Object[] goodfriendsString = (Object[]) object;
    for (Object object2 : objLocationVO) {
    System.out.println(object2);            
     }
}
于 2012-09-21T12:00:01.850 に答える