Функция Java возвращает массив

 
0
 
Oracle
ava
romai | 19.11.2005, 11:03
необходимо отправить в функцию массив и вернуть функцией массив.
для этого я создал 2 типа
create or replace type mtp$Array$Number as table of number;

create or replace type mtp$Array2$Number as table of mtp$Array$Number;

определяю функцию
create or replace function fm(pK mtp$array2$number) return mtp$array2$number
as language java name 'sKTZ.ResultPlan(oracle.sql.ARRAY[]) return oracle.sql.ARRAY[]';

как вернуть массив чисел в код PL/SQL , тип mtp$array2$number создан
чтобы отправлять массив в Java и принимать .
Ошибка - несовмесимость типов, приведение(из BigDecimal[] и int[] к oracle.sql.ARRAY[]) выполнить не удалось
public class sKTZ
{
public static oracle.sql.ARRAY[] ResultPlan(oracle.sql.ARRAY[] pCOST)
throws SQLException
{
int[][] xCOST = new int[2][2];
xCOST[0] = (int[])pCOST[0].getArray();
xCOST[1] = (int[])pCOST[1].getArray();

return xCOST;
}
}
Comments (2)
ava
LSD | 19.11.2005, 16:12 #
Так:
create or replace and compile java source named ARRAY_JAVA as
import oracle.jdbc.OracleConnection;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.math.BigDecimal;

public class sKTZ
{
public static ARRAY resultPlan(ARRAY array) throws SQLException
{
ARRAY[] arr = new ARRAY[array.length()];
System.arraycopy(array.getArray(), 0, arr, 0, arr.length);

BigDecimal[][] data = new BigDecimal[arr.length][];
for(int i = 0; i < data.length; i++)
{
data[i] = new BigDecimal[arr[i].length()];
int[] inta = arr[i].getIntArray();
for(int j = 0; j < data[i].length; j++)
data[i][j] = new BigDecimal(inta[j] * 100);
}

OracleConnection conn = (OracleConnection) DriverManager.getConnection("jdbc:default:connection:");
ArrayDescriptor arrayDescriptor = array.getDescriptor();
return new ARRAY(arrayDescriptor, conn, data);
}
}


P.S. Теги code не надо было копировать из моего сообщения (я их написал через русскую о, чтобы они были видны тебе). Когда ты хочешь вставить код в сообщение, нажми сверху на комбобокс Код, выбери там нужный тип подсветки (SQL, Java и т.п.) и после этого вставляй код. Или если ты используешь IE или Firefox, то можешь просто выделить нужный участок кода и нажать на тот же комбобокс, код будет автоматом обрамлен тегами code.
ava
romai | 20.11.2005, 16:14 #
LCD - спасибо!
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
ava  LSD   romai
advanced
Submit