Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как получить то что возвращает


Автор: AlexMix 20.7.2006, 14:15
 как получить то что возвращает функция 

Процедура

Код

PROCEDURE coun_us 
IS
c_us varchar2(50);
BEGIN
c_us :=  coun_user;
EXECUTE IMMEDIATE 'SELECT '||c_us||' as count FROM DUAL';
END;


Код

CallableStatement cst1 = connection.prepareCall("{CALL ALEX_PROCESSING.coun_user}");
String str =  cst1.getString("count");
req.setAttribute("kol", str);


Ошибка 
java.sql.SQLException: Не поддерживаемая функция


Спасибо   

Автор: w1nd 20.7.2006, 22:46
Oracle? У вас неправильно написана процедура - она ничего не возвращает. Следует объявить возвращаемый параметр и писать в него.   

Автор: AlexMix 21.7.2006, 10:08
Переписал процедуру 


Код

PROCEDURE coun_us  (co_us OUT varchar2)
IS
BEGIN
co_us :=  alex_processing.coun_user;
END;


что бы ее запустить в PL/SQL DEve пишу 

Код

declare 
ttt varchar2(10);
begin
 alex_processing.coun_us(ttt);
dbms_output.put_line(ttt);
end;


работает 

как запустить ее с сервлета 


Код

CallableStatement cst1 = connection.prepareCall("{CALL ALEX_PROCESSING.coun_us()}");


изначение присвоить какой нить переменной 
?????????


 

Автор: w1nd 21.7.2006, 11:04
"{CALL ALEX_PROCESSING.coun_us(?)}" или "begin CALL ALEX_PROCESSING.coun_us(:1); end;"  

Автор: AlexMix 21.7.2006, 11:09
Ну это понятно 

а как дальше .. 


cst1.registerOutParameter("ttt", Types.VARCHAR); - это я передал переменную ттт ораклу 

а как теперь получить значение 

 

Автор: w1nd 21.7.2006, 11:27
Как обычно: cst1.getString(1) 

Автор: AlexMix 21.7.2006, 11:46
написал 

            
Код

CallableStatement cst1 = connection.prepareCall("{CALL ALEX_PROCESSING.coun_us(?)}");

            cst1.registerOutParameter("ttt", Types.VARCHAR);
            cst1.executeQuery();

            String mm =  cst1.getString(1);


выкидывает ошибку 

java.sql.SQLException: Не поддерживаемая функция 

Автор: AlexMix 21.7.2006, 12:04
Все разобрался 

 
Код

CallableStatement cst1 = connection.prepareCall("{CALL ALEX_PROCESSING.coun_us(?)}");
 cst1.registerOutParameter(1, Types.VARCHAR);
 cst1.executeQuery();
 String mm =  cst1.getString(1);
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)