powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возврат типа RECORD из Java
7 сообщений из 7, страница 1 из 1
Возврат типа RECORD из Java
    #39315078
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Необходимо из подключенной 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
Возврат типа RECORD из Java
    #39315100
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Возврат типа RECORD из Java
    #39315117
Datum.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

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

HOME_XНеобходимо из подключенной Java функции Ну и зачем здесь джава, да еще и непонятно что манипулирующая.
...
Рейтинг: 0 / 0
Возврат типа RECORD из Java
    #39315145
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Datum.,
Потребность директивно-архитектурная
...
Рейтинг: 0 / 0
Возврат типа RECORD из Java
    #39315186
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Возврат типа RECORD из Java
    #39315256
ЖДБЦДГ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HOME_XКак его вернуть ?доку пробовал читать?
...
Рейтинг: 0 / 0
Возврат типа RECORD из Java
    #39315262
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖДБЦДГ,

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


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