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

您将答案作为字符串数组,然后存储在列表字符串中。您不能将字符串 [] 直接存储到字符串中。

你能发布用于获取和打印的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 回答