Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возврат типа RECORD из Java / 7 сообщений из 7, страница 1 из 1
25.09.2016, 11:45
    #39315078
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
Доброго дня господа !

Необходимо из подключенной Java функции вернуть описанный тип (RECORD)

Умеют вернуть структуру из запроса
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create type SV_REC_RR10 as object (f1 number, f2 varchar2(30), f3 date)
/
create table SV_TT_RR10 (id number, list SV_REC_RR10)
/
insert into SV_TT_RR10 values (1, SV_REC_RR10(101, 'Row One', '01-JAN-2001'));
insert into SV_TT_RR10 values (2, SV_REC_RR10(102, 'Row Two', '02-JAN-2002'));
insert into SV_TT_RR10 values (3, null);
insert into SV_TT_RR10 values (4, SV_REC_RR10(104, 'Row Four', '04-JAN-2004'));
insert into SV_TT_RR10 values (5, SV_REC_RR10(105, 'Row Five', '05-JAN-2005'));
commit;



В функции нужно только
Sv_RR10 r = new Sv_RR10(11,"Hello",new Date(10,10,10));
st = (STRUCT) r; - это ошибка - как исправить ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
package Analitic;

import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;

class Sv_RR10 
{
    int    F1;
    String F2;
    Date   F3;
}    
   
public class RR10
{
	public static STRUCT RR10_Func (NUMBER id[], STRUCT adt[], STRUCT adt2) throws SQLException
	{
		Connection conn = DriverManager.getConnection("jdbc:oracle:kprb:");
		Statement stmt = conn.createStatement();
		OraclePreparedStatement ps = (OraclePreparedStatement)
		conn.prepareStatement ("select LIST from SV_TT_RR10 where ID = ?");
		ps.setNUMBER (1, id[0]);
		OracleResultSet rs = (OracleResultSet) ps.executeQuery();
		Sv_RR10 r = new Sv_RR10(11,"Hello",new Date(10,10,10));
		STRUCT st = null;
		while (rs.next())
		{
			st = (STRUCT) rs.getObject(1);
		}
		st = (STRUCT) r;
		ps.close();
		id[0] = new NUMBER(id[0].intValue() + 1000);
		adt[0] = adt2;
		return st;
	}
}		



Декларация функции
Код: plsql
1.
create or replace function SV_RR10_Func (x IN OUT number, y IN OUT SV_REC_RR10, z IN SV_REC_RR10) return SV_REC_RR10 as language java name 'Analitic.RR10.RR10_Func(oracle.sql.NUMBER[],oracle.sql.STRUCT[],oracle.sql.STRUCT) return oracle.sql.STRUCT';



Прошу уточнить как верно решить задачу

Вопрос 2 - в конечном результате необходимо вернуть тип table
create or replace type SV_TB_REC as table of SV_REC_RR10; (пытался через java.sql.Array)

Заранее благодарен !
...
Рейтинг: 0 / 0
25.09.2016, 14:32
    #39315100
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
JDBC Reference Information :

Table A-5 describes Oracle JDBC driver support for PL/SQL data types. Note that PL/SQL data types include these categories:

Composite Types:

RECORDnoTABLEnoVARRAYyes

SY.
...
Рейтинг: 0 / 0
25.09.2016, 15:22
    #39315117
Datum.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
SY,

Он RECORDом называет create type.

HOME_XНеобходимо из подключенной Java функции Ну и зачем здесь джава, да еще и непонятно что манипулирующая.
...
Рейтинг: 0 / 0
25.09.2016, 17:12
    #39315145
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
Datum.,
Потребность директивно-архитектурная
...
Рейтинг: 0 / 0
25.09.2016, 19:10
    #39315186
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
SY,

Извините - исправляюсь !
Это тип созданный пользователем .

oracle
create type SV_REC_RR10 as object (f1 number, f2 varchar2(30), f3 date)

Java
class Sv_RR10
{
int F1;
String F2;
Date F3;
}

Как его вернуть ? может быть в виде Sql.Array (в виде Table)
...
Рейтинг: 0 / 0
25.09.2016, 23:21
    #39315256
ЖДБЦДГ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
HOME_XКак его вернуть ?доку пробовал читать?
...
Рейтинг: 0 / 0
26.09.2016, 00:09
    #39315262
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат типа RECORD из Java
ЖДБЦДГ,

Мне нужно без connection к текущей базе
connection.createArrayOf(typeName, data) - архитектурно нельзя делать

Код: java
1.
2.
3.
final String[] data = yourList.toArray(new String[yourList.size()]);
final java.sql.Array sqlArray = connection.createArrayOf(typeName, data);
statement.setArray(position, sqlArray);




Прошу конкретный прмер
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возврат типа RECORD из Java / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]