Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывести результат из хранимой процедуры с входными и выходными параметрами / 10 сообщений из 10, страница 1 из 1
16.08.2012, 15:53:31
    #37919646
pooleet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
Здравствуйте, помогите пожалуйста.
Если не использовать хранимую процедуру то параметр получается передать в строку, но если использовать ХП то выводятся только сообщения "Проверка1", "Проверка2". Из mssql2008 запрос работает корректно

такой метод
Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
try
					{
           InitialContext ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("jdbc/WQW");
	Connection connection = ds.getConnection();	
		
	String QW = 
////Этот запрос всегда выполняется
	"declare @b integer set  @b = (select convert(integer,'123'))	" +
	"declare @return_value int,        @message varchar(8000)	" + 
	"exec @return_value = dbo.TT_PDTVINSAP	" +   
	"@igmng = @b ,	" +  
	"@message = @message OUTPUT	" +

////Вот тут начинаются проблемы	
	"Select TOP 1   @message + '  тип: ' + convert(varchar, @return_value) aa" +
	" ";
		

	
	Statement stmt = connection.createStatement();
	   boolean results = stmt.execute(QW); 
	   int rsCount = 0;
	  
	   
	   do {
		 if(results) {
			ResultSet rs = stmt.getResultSet();  
			rsCount++;
		
			while (rs.next()) {
                                    /////////////////////////////////////
				/////////////////////////////////////////хочу вывести вот эту строку
						  String Nco = rs.getString("aa");
						  wdComponentAPI.getMessageManager().reportSuccess( Nco + " сообщение" );
				 ///////////////////////////////////////
			///////////////////////////////////////
			}
			rs.close();
		 }
		
		 results = stmt.getMoreResults();
		
		wdComponentAPI.getMessageManager().reportSuccess("Проверка1" );
		
		 } while(results);
	   stmt.close();
	   wdComponentAPI.getMessageManager().reportSuccess("Проверка2" );
	   }
	catch (Exception e) {
	   e.printStackTrace();
	}



хранимая процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ALTER procedure [dbo].[Proc] 
(
@aufnr varchar(20),
@igmng numeric(18,6),
@getri datetime,

@message varchar(8000) out
)
AS
Begin

insert into TT_PDTVINSAP2 (txt)
values
(@igmng)


set @message = 'Заказ!'
return 1--1-успех, 0-неудача
 
End
...
Рейтинг: 0 / 0
16.08.2012, 16:03:54
    #37919656
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
pooleet,
есть такая штука как пошаговая отладка у программистов.
...
Рейтинг: 0 / 0
16.08.2012, 16:16:50
    #37919678
pooleet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
Petro123,

я только учусь поэтому задаю такие вопросы... хотя сама понимаю что ответ не сложный

думала что подойдет такой вариант http://msdn.microsoft.com/ru-ru/library/ms378758, но как увидела не подошел
...
Рейтинг: 0 / 0
16.08.2012, 16:28:29
    #37919701
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
pooleet,
лично я ничего не понял. Т.к. там 3 фразы не связанных между собой.
Может это женская нелогичность? (шутка)
...
Рейтинг: 0 / 0
16.08.2012, 16:45:32
    #37919756
pooleet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
Petro123,

Связи в sql запросе?
...
Рейтинг: 0 / 0
16.08.2012, 16:51:30
    #37919783
pooleet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
вызывала из java вызывала ХП [dbo].[Proc] вместо dbo.TT_PDTVINSAP
...
Рейтинг: 0 / 0
16.08.2012, 17:09:52
    #37919821
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
pooleet,
выведите в отладку количество строк в rs
...
Рейтинг: 0 / 0
17.08.2012, 07:10:59
    #37920259
пролетевший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
Statement не обязательно возвращает ResultSet. Если execute или getMoreResults вернули false, надо еще проверить getResultsCount. Это прямо в javadoc на все методы которыми пользуетесь написано
...
Рейтинг: 0 / 0
23.08.2012, 12:04:37
    #37927737
pooleet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
Заработало!!! и вправду сверху ересь написала, но возник другой вопрос

Код: 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.
	try
					{
	InitialContext ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("jdbc/WH");
	Connection con = ds.getConnection();	
	
						
	IWDNode node = wdContext.getChildNode("TD",0);
	// заказ @aufnr 
	String Order = node.getCurrentElement().getAttributeAsText("Order");
	// Факт количество @igmng 
	Integer FQuantity = (Integer) node.getCurrentElement().getAttributeValue("FQuantity");
	// Факт дата @getri 
	Date Fdend = (Date) node.getCurrentElement().getAttributeValue("Fdend");					
	
	
		
	CallableStatement cstmt = con.prepareCall("{? = CALL dbo.TT_PDTVIN(?,?,?,?,?)}");
	cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
	cstmt.setString(2, Order); //@aufnr varchar(20),
	cstmt.setInt(3, ); //@igmng numeric(18,6)
	cstmt.setDate(4, Fdend);  //@getri datetime
	cstmt.setInt(5, 1); //@type int
	cstmt.registerOutParameter(6, java.sql.Types.VARCHAR); //@message varchar(8000) out 
	
	// считаем строки
	//cstmt.getUpdateCount();
	cstmt.execute();
	wdComponentAPI.getMessageManager().reportSuccess("RETURN STATUS: " + cstmt.getInt(1) +  "  Message :" + cstmt.getString(6));
		
	
	   }
	catch (Exception e) {e.printStackTrace();
	}



Переменную необходимо
Integer FQuantity = (Integer) node.getCurrentElement().getAttributeValue("FQuantity");
засунуть сюда, а не получается,говорит что тип не тот
cstmt.setInt(3, ???????); //@igmng numeric(18,6)

как быть?
...
Рейтинг: 0 / 0
24.08.2012, 07:39:13
    #37928869
пролетевший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести результат из хранимой процедуры с входными и выходными параметрами
pooleet,
NUMBER -> BigDecimal или BigInteger
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вывести результат из хранимой процедуры с входными и выходными параметрами / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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