powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [Oracle] Чтение dbms_output
2 сообщений из 2, страница 1 из 1
[Oracle] Чтение dbms_output
    #34920610
Mamoulian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Для отладки понадобилось посмотреть параметры, передаваемые в хранимую процедуру на Oracle 10g.
Делаю это следующим образом. Код работает:
Код: plaintext
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.
        readonly string connectionString = @"Data Source=ELLDEV;User ID=smeta;Password=smeta";

        private void MainForm_Load(object sender, EventArgs e)
        {
            using (OracleConnection con = new OracleConnection(connectionString))
            using (OracleCommand cmd = new OracleCommand("", con)) {
                cmd.CommandText = "dbms_output.put_line('Проверка связи'); dbms_output.put_line('Проверка связи 2')";
                cmd.CommandType = CommandType.StoredProcedure;

                con.Open();
                EnableDBMSOutput(con);

                cmd.ExecuteNonQuery();

                dbmsTextBox.Text = ReadDBMSOutput(con);
            }

        }

        void EnableDBMSOutput(OracleConnection c)
        {
            using (OracleCommand cmd = new OracleCommand("dbms_output.enable", c)) {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.ExecuteNonQuery();
            }
        }

        string ReadDBMSOutput(OracleConnection c)
        {
            using (OracleCommand cmd = new OracleCommand("dbms_output.get_line", c)) {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("line", OracleType.VarChar,  255 ).Direction = System.Data.ParameterDirection.Output;
                cmd.Parameters.Add("status", OracleType.Int16).Direction = System.Data.ParameterDirection.Output;

                StringBuilder r = new StringBuilder();

                int status =  0 ;
                while (true) {
                    cmd.Parameters["line"].Value = null;
                    cmd.Parameters["status"].Value = null;
                    
                    cmd.ExecuteNonQuery();

                    status = int.Parse(cmd.Parameters["status"].Value.ToString());
                    if (status !=  0 )
                        break;

                    if(r.ToString().Length >  0 )
                        r.Append(Environment.NewLine);
                    r.Append(cmd.Parameters["line"].Value.ToString());
                }

                return r.ToString();
            }
        }

А вот когда заменяю
Код: plaintext
1.
2.
3.
            using (OracleCommand cmd = new OracleCommand("", con)) {
                cmd.CommandText = "dbms_output.put_line('Проверка связи'); dbms_output.put_line('Проверка связи 2')";
                cmd.CommandType = CommandType.StoredProcedure;

На нужный мне вызов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
            using (OracleCommand cmd = new OracleCommand("PRODUCTIONSTATISTICS.psEquipmentSam", con)) {
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new OracleParameter("districtCode", OracleType.Char,  4 )).Value = "332";
                cmd.Parameters.Add(new OracleParameter("startDate", OracleType.Char,  8 )).Value = "20060801";
                cmd.Parameters.Add(new OracleParameter("endDate", OracleType.Char,  8 )).Value = "20060831";
                cmd.Parameters.Add(new OracleParameter("equipmentModel", OracleType.VarChar,  3 )).Value = "ОКТ САМ";
                cmd.Parameters.Add(new OracleParameter("rc", OracleType.Cursor)).Direction = ParameterDirection.Output;

То ReadDBMSOutput ничего не возвращает.
При этом в моей хранимой процедуре PRODUCTIONSTATISTICS.psEquipmentSam точно делается вывод в dbms_output и он работает - проверено вызовом из pl/sql.

В чём у меня ошибка? Как сделать правильно?
...
Рейтинг: 0 / 0
[Oracle] Чтение dbms_output
    #34920898
Mamoulian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения. Нашел ошибку. Тема закрыта.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / [Oracle] Чтение dbms_output
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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