Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по выполнению хранимой процедуры oracle12c через mybatis / 3 сообщений из 3, страница 1 из 1
02.12.2016, 16:30
    #39359478
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по выполнению хранимой процедуры oracle12c через mybatis
Добрый день, уважаемые форумчане.

Подскажите пож-ста, как выполнить хранимую процедуру oracle 12.1.0.2 через mybatis 3.3.1
текст хранимой процедуры -

create or replace procedure prc_ora12(p_in number) is
v_ret sys_refcursor;
begin
open v_ret for select * from clients where id_client=p_in;
dbms_sql.return_result(v_ret);
end;
/

подключаюсь через ojdc7.jar (12.1.0.2)

в xml-файле написал так -
<select id="callOra12" statementType="CALLABLE" resultMap="result">
{#{p_out, jdbcType=CURSOR, mode=OUT, javaType=java.sql.ResultSet,resultMap=result} = call prc_ora12(#{p_in,jdbcType=NUMERIC,javaType=java.math.BigDecimal,mode=IN})}
</select>

<resultMap id="result" type="store.Client">
<result property="id" column="ID_CLIENT"/>
<result property="name" column="NAME_CLIENT"/>
<result property="dtHired" column="DT_HIRED"/>
<result property="dtTz" column="col_tms"/>
</resultMap>

при выполнении через -
System.out.println("cursor from Oracle12");
session.selectList("callOra12", mpCallQuery);

Получаю такую ошибку -
System.out.println("cursor from Oracle12");
session.selectList("callOra12", mpCallQuery);



В то же время такая функция:
create or replace function func_cursor(p_in number) return sys_refcursor is
v_ret sys_refcursor;
begin
open v_ret for select * from clients where id_client=p_in;
return v_ret;
end;

отрабатывает без проблем в том же методе.

В чистой java эту процедуру вызываю так -

OracleDataSource ods = null;
String strSql="{ call prc_retcursor }";
int intRes = 0;
try {
ods=new OracleDataSource();
ods.setUser("hr");
ods.setPassword("hr");
ods.setServerName("хосТ");
ods.setServiceName("mypdb");
ods.setPortNumber(1521);
ods.setDriverType("thin");
try (OracleConnection cnn = (OracleConnection) ods.getConnection()) {
CallableStatement csW = cnn.prepareCall(strSql);
csW.execute();
while (csW.getMoreResults()) {
ResultSet rs = csW.getResultSet();
System.out.println("Become ResultSet");
while (rs.next()) {
intRes=rs.getInt("F1");
System.out.println(intRes);
}
}


Помогите пожалуйста вызвать процедуру.
Заранее спасибо.
...
Рейтинг: 0 / 0
02.12.2016, 17:03
    #39359519
Пылинка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по выполнению хранимой процедуры oracle12c через mybatis
Мурзик

create or replace procedure prc_ora12(p_in number) is
v_ret sys_refcursor;



В чистой java эту процедуру вызываю так -

OracleDataSource ods = null;
String strSql="{ call prc_retcursor }";

}


проблема,конено, не в этом, но прикольно - процедуру выложили prc_ora12(p_in number) ,
а вызываете prc_retcursor и без параметра.....
PS Где вы работатете, хотя бы город назовите?
...
Рейтинг: 0 / 0
02.12.2016, 17:33
    #39359560
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по выполнению хранимой процедуры oracle12c через mybatis
Пылинка, добрый день.
Вы считаете, что эта проблема связана с таймЗоной?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по выполнению хранимой процедуры oracle12c через mybatis / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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