powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по SQLWarning ири работе с Oracle 11.2.0.3
7 сообщений из 7, страница 1 из 1
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420197
Мурзик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, уважаемые Дамы и господа.

Подскажите пожалуйста, что надо сделать, чтобы получить что-нибудь в SQLWarning при работе с Oracle -

Что делал -
----------
OraWarning.java
Код: 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.
110.
111.
112.
113.
114.
115.
116.
117.
118.
package com.javatunes.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;

import org.apache.derby.client.am.SqlWarning;

import oracle.jdbc.pool.OracleDataSource;

public class OraWarning {
	public static void main(String[] args) {
		OracleDataSource ods;
		Connection cnn = null;
		try {
			ods = new OracleDataSource();
			ods.setUser("hr");
			ods.setPassword("hr");
			ods.setServerName("SRVХХ");
			ods.setServiceName("orcl");
			ods.setPortNumber(1521);
			ods.setDriverType("thin");
			cnn = ods.getConnection();
			
			String sqlOne = "call DBMS_WARNING.set_warning_setting_string ('ENABLE:ALL', 'SESSION')";

			Statement stmOne = cnn.createStatement();
			
			int resultSql=stmOne.executeUpdate(sqlOne);

			sqlOne = "alter procedure prc_work compile";
			resultSql=stmOne.executeUpdate(sqlOne);
			
			SQLWarning swrSql=stmOne.getWarnings();
			if (swrSql==null) {
				System.out.println("no warningS");
			}
			while(swrSql!=null ) {
				System.out.println("~~");
				swrSql.getNextWarning();
			}

			
			sqlOne = "call DBMS_WARNING.set_warning_setting_string ('DISABLE:ALL', 'SESSION')";
			resultSql=stmOne.executeUpdate(sqlOne);
			
			
			//implicit convertation varchar2->number
			String strRes;			
			byte btRes;
			sqlOne="select 1e1 f1 from dual";
			ResultSet r = stmOne.executeQuery(sqlOne);
			while (r.next()) {
				strRes=r.getString("f1");
				btRes=r.getByte("f1");
			}

			swrSql=stmOne.getWarnings();
			if (swrSql==null) {
				System.out.println("no warningS");
			}
			while(swrSql!=null ) {
				System.out.println("~~");
				swrSql.getNextWarning();
			}
			r.close();
			
			//Prepared statement with implicit convertion varchar2->number;
			sqlOne="select first_name from employees where employee_id=?";			
			PreparedStatement psOne = cnn.prepareStatement(sqlOne);
			psOne.setString(1, "100");
			r = psOne.executeQuery();
			while (r.next()) {
				strRes=r.getString("first_name");
				System.out.println(strRes);
			}			

			swrSql=stmOne.getWarnings();
			if (swrSql==null) {
				System.out.println("no warningS");
			}
			while(swrSql!=null ) {
				System.out.println("~~");
				swrSql.getNextWarning();
			}
			r.close();
			
			
		} catch (SQLException e) {
			logException(e);
			if (cnn!=null) {
				try {
					cnn.commit();
					cnn.close();
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		}

	}

	static void logException(SQLException ex) {
		while (ex != null) {
			System.out.println(ex.getSQLState());
			System.out.println(ex.getErrorCode());
			System.out.println("----");
			System.out.println(ex.getMessage());
			System.out.println("====");
			ex = ex.getNextException();
		}
	}

}



----------
Выдает -
*****
no warningS
no warningS
Steven
no warningS
*****

текст хранимой процедуры:
========
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace procedure prc_work as
function func_inner return number
 is
 begin
  return 1;
 end;
begin
 for i in 1..5 loop
  dbms_output.put_line(func_inner());
 end loop;
end;



:::::::::

Если ее компилить так -
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin
DBMS_WARNING.set_warning_setting_string ('ENABLE:ALL', 'SESSION');
end;
/

alter procedure prc_work compile;

begin
DBMS_WARNING.set_warning_setting_string ('DISABLE:ALL', 'SESSION');
end;
/


*****
то выдает:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1 PLW-05018: unit PRC_WORK omitted optional AUTHID clause; default
value DEFINER used

*****
т.е. warning есть.

Предвижу вопрос - "А зачем тебе этот SQLWarning?"
ответ - "надо показать пример с этим Warning".

Заранее всем спасибо.
До свидания.
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420239
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420242
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МурзикДо свидания.
Прощай!
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420307
Мурзик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, добрый день.
Было очень приятно увидеть по ссылке свой же вопрос (в числе прочих)
По совету из одного ответа (о, почти рифма :)) добавил в свой класс вызов процедуры -
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
			swrSql=null;
			sqlOne="call prc_work()";
			psOne=cnn.prepareStatement(sqlOne);
			psOne.execute();
			swrSql=psOne.getWarnings();
			if (swrSql==null) {
				System.out.println("no warningS");
			}
			while(swrSql!=null ) {
				System.out.println("~~");
				swrSql.getNextWarning();
			}


И опять тишина.
Кстати, интересно, а куда же попадает вывод dbms_output.put_line('1');

Заранее спасибо.
Не говорите мне "прощай", земля круглая.
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420596
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МурзикКстати, интересно, а куда же попадает вывод dbms_output.put_line('1');
Может оракловый драйвер не считает нужным показывать результат вызовов dbms_output.put_line() как предупреждения, в отличие от драйвера SqlServer и вызовов print. Результат dbms_output.put_line() можно прочитать самостоятельно через dbms_output.get_line(), что разные приложения и делают.
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420650
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МурзикБыло очень приятно увидеть по ссылке свой же вопрос (в числе прочих)

Sorry, провтыкал что вопрос про Oracle. Подозреваю что в oracle никак. Возможно стоит ORA-17110 попробовать поднять на сервере.

МурзикНе говорите мне "прощай", земля круглая.
Я это к тому что странно как-то задать вопрос и попрощаться сразу со всеми. Вроде же разговор планировал продолжать?
...
Рейтинг: 0 / 0
вопрос по SQLWarning ири работе с Oracle 11.2.0.3
    #38420961
Мурзик,
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:45027262935845

Tom KyteBy default, tools such as SQL*PLUS and SVRMGRL are DBMS_OUTPUT aware. Most other
environments are not. For example, your Java/JDBC program is definitely not DBMS_OUTPUT
aware. We'll see in this section how to make Java/JDBC DBMS_OUTPUT aware.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по SQLWarning ири работе с Oracle 11.2.0.3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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