powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / sql print как получить в java
5 сообщений из 5, страница 1 из 1
sql print как получить в java
    #38222454
green_man_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, пишу приложение которому нужно запускать хранимые процедуры, процедуры содержат print - ы типа: print '%1!' , 'test', как получить результат этих принтов, вариант переписать процедуру - не вариант, процедур много и они не мои, они поддерживаются и запускаются в других (написанных на C++) программах, + в с батников asql
в процедуре много принтов о результатах выполнения процедуры

вот методы старта процедуры и получения результатов:
Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
	public String exec_proc_test(String st_base,String st_name_proc, String st_name_parametr)
	{
		err = "";
		
		try {
			st = con.createStatement();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			log_2.error("Execute_Sql.exec_proc.con.createStatement()  " + e1);
		}
	
		CallableStatement cal_st = null;
	    
	    
		try {
			
			cal_st = con.prepareCall(  "{? = call   exec " + st_base + ".." + st_name_proc + " ? }"  );
			
			cal_st.setString(2, st_name_parametr);
			cal_st.registerOutParameter(1, java.sql.Types.CHAR);
			
			SQLWarning warning = null;

						
			cal_st.execute();
					

			
			//cal_st.e
			warning = cal_st.getWarnings();
			
			System.out.println (get_warning(warning));
			
			

			while(true)
			{

				int count =  cal_st.getUpdateCount();
				if (count >0)
				{
					err += count + " row affected" + "\n";


					cal_st.getMoreResults();

					continue;
				}
				if(count == 0)
				{

					cal_st.getMoreResults();
					continue;
				}

				ResultSet rs = cal_st.getResultSet();

				int x = 0;
				if(rs!= null)
				{
					x = rs.getMetaData().getColumnCount();
					while(rs.next())
					{
						for(int i = 1; i <= x; i ++)
						{
							err += rs.getString(i) ;
						}

						err += "\n"; 
					}
					cal_st.getMoreResults();
					continue;
				}
				if (!err.equalsIgnoreCase(""))
				{
					System.out.print("err + rs.getString(i) = "  + err);
				}
				
				
				 break;				
			}
			


		} 
		catch(SQLException e){System.err.println(e.getMessage());}
		catch(Exception e){e.printStackTrace();}
		
		
		st = null;

		
		return err;
	}
	private String get_warning(SQLWarning warning)
	{
		String warn = null ;
		while(warning != null)
		{
			System.out.println("warning.getSQLState = " + warning.getSQLState());
			System.out.println("warning.getMessage() = " + warning.getMessage());
			System.out.println("warning.getErrorCode() = " + warning.getErrorCode());
			warning.getNextWarning();
		}
		
		 
		return warn;
	}


заранее спасибо
...
Рейтинг: 0 / 0
sql print как получить в java
    #38222507
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.04.2013 18:51, green_man_25 wrote:

> процедуры содержат print - ы типа: print '%1!' , 'test', как получить результат этих принтов

Так getWarnings() они не видны?

http://forum.springsource.org/archive/index.php/t-31156.html



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
sql print как получить в java
    #38222536
green_man_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет varning выдает только ошибки, и выдает хорошо, за ссылку спасибо, буду разбираться, так как в английском не силен нужно время :)
...
Рейтинг: 0 / 0
sql print как получить в java
    #38222664
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
green_man_25,

Мой склероз мне напоминает, что СУБД наподобие MSSQL print'ы присылает в виде множества ризалтсетов. Может, стоит проверить их с помощью getMoreResults() ?
...
Рейтинг: 0 / 0
sql print как получить в java
    #38224833
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
green_man_25нет varning выдает только ошибки, и выдает хорошо,
У меня через драйвера Microsoft SQL Server JDBC Driver 3.0 и jTDS весь print выдается через getWarnings():
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Connection con;
...
Statement st = con.createStatement();
st.execute("if object_id('foo', 'P') is not null drop procedure foo");
st.execute(
  "create procedure foo as\n" +
  "begin\n" +
  "  set nocount on\n" +
  "  print 'Hello from procedure'\n" +
  "end"
);
PreparedStatement pst = con.prepareStatement("{ call foo()}");
pst.execute();
SQLWarning sqlWarting = pst.getWarnings();
while (sqlWarting != null) {
  System.out.println(sqlWarting.getLocalizedMessage());
  sqlWarting = sqlWarting.getNextWarning();
}
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / sql print как получить в java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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