Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / sql print как получить в java / 5 сообщений из 5, страница 1 из 1
11.04.2013, 17:51:14
    #38222454
green_man_25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql print как получить в java
Всем привет, пишу приложение которому нужно запускать хранимые процедуры, процедуры содержат 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
11.04.2013, 18:15:54
    #38222507
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql print как получить в java
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
11.04.2013, 18:27:54
    #38222536
green_man_25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql print как получить в java
нет varning выдает только ошибки, и выдает хорошо, за ссылку спасибо, буду разбираться, так как в английском не силен нужно время :)
...
Рейтинг: 0 / 0
11.04.2013, 20:18:43
    #38222664
WGA
WGA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql print как получить в java
green_man_25,

Мой склероз мне напоминает, что СУБД наподобие MSSQL print'ы присылает в виде множества ризалтсетов. Может, стоит проверить их с помощью getMoreResults() ?
...
Рейтинг: 0 / 0
14.04.2013, 11:51:28
    #38224833
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql print как получить в java
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
Форумы / Java [игнор отключен] [закрыт для гостей] / sql print как получить в java / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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