Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Лог FTP в CLOB? / 21 сообщений из 21, страница 1 из 1
13.02.2018, 11:46
    #39601030
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Всем привет! Поставил себе задачку получить FTP лог в CLOB переменную, чтобы потом сохранить в таблицу. Когда использую программное окно - то в DBMS весь листинг "разговора" отображается, хотя я его туда не отправлял, а вот если соединение с FTP запихнуть в хранимую процедуру, то как этот "разговор" собрать в CLOB(например) переменную, чтобы сохранить затем в таблицу? Такое возможно?
...
Рейтинг: 0 / 0
13.02.2018, 12:10
    #39601042
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Возможно всё. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
13.02.2018, 12:45
    #39601068
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
вероятно, вызовом функции get_log_text пакета, который Вами используется для диалога с фтп-сервером
...
Рейтинг: 0 / 0
13.02.2018, 12:50
    #39601073
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Пакет использую FTP (Oracle 11g), покопал его, не нашел ничего похожего на получение лога... Может как-то буфер DBMS отлавливать? Если этот пакет туда пишет конечно из хранимых процедур.
...
Рейтинг: 0 / 0
15.02.2018, 15:20
    #39602429
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Ну что-то никак не выходит собрать лог подключения... хотя бы в строку Varchar2.... Не уже ли никто не делал такого???
...
Рейтинг: 0 / 0
15.02.2018, 15:35
    #39602439
Не шире ли
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_GrizzlyНе уже лиВсе делали, только х.шары запылились.
...
Рейтинг: 0 / 0
15.02.2018, 15:51
    #39602453
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Оказывается все было просто....

declare
v_Message DBMS_OUTPUT.CHARARR;
v_Status numeric:=20;

делаем подключение к ftp
делаем какие-то работы с ftp

dbms_output.get_lines(lines => v_Message,numlines => v_Status);

FOR linenum in 1..v_Status
LOOP
dbms_output.put_line(linenum||':'||v_Message(linenum));
end loop;

Вместо dbms_output.put_line подставляем CLOB. Вот только один момент остался не ясным, я указал количество строк 20. Это произвольное число, а как узнать какое действительно число строк появилось в буфере dbms_output ?
Конечно же, после вызова процедуры - туда запишется реальное количество строк(но не более 20 в моем случае), которое вернула процедура. Тогда логичный вопрос - а как же все данные получить гарантированно?
...
Рейтинг: 0 / 0
15.02.2018, 15:55
    #39602458
Лог FTP в CLOB?
Dr_GrizzlyОказывается остается радоваться, что ты не хирург.
...
Рейтинг: 0 / 0
16.02.2018, 07:57
    #39602714
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Конечно хорошо что не хирург, но радоваться рано...

Запихнул код в процедуру, вызываю эту процедуру из приложения, а в логе пусто...... Соединение прошло, отключилось, а в логе пусто.... Получается что пакет dbms_output - только для визуального отображения из под Oracle? Или я что-то не догоняю?
...
Рейтинг: 0 / 0
16.02.2018, 08:27
    #39602721
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_GrizzlyИли я что-то не догоняю?Ты скромничаешь.
...
Рейтинг: 0 / 0
16.02.2018, 12:39
    #39602881
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Блин, я за все это время на форуме я вижу только троллинг вместо нормальной помощи.... я с оракл второй месяц знаком, и пытаюсь понять что от куда растет, а ответа нормального никто не дал... Такое ощущение что модератор тут умер... и вы накинулись....

Я еще раз прошу помочь мне разобраться с этим логированием FTP. Если трудно сказать как - то хотя бы скажите где копать...
...
Рейтинг: 0 / 0
16.02.2018, 12:42
    #39602882
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Код: plsql
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.
create or replace procedure UP_SendFTPFile(mess out varchar2) is
  l_conn      UTL_TCP.connection;
  txt_ftp_log VARCHAR2(1000);
  exc_ftp_err EXCEPTION;
  cLog      Clob; --лог ftp
  kolToSend Numeric; --количество файлов для отправки
  -- для Сбора лога FTP:
  v_Message DBMS_OUTPUT.CHARARR;
  v_Status  numeric := 32767;
begin
  -- выберем данные для отправки
  Select count(rn)
    into kolToSend
    from UT_FILEFTPSEND_PREP
   where STATUSSEND <> 'Отправлен';

  if kolToSend > 0 then
    begin
      cLog := 'Начало подключения' || chr(13);
    
      l_conn := ftp.login('******.ru',
                          '21',
                          '***********',
                          '***********',
                          60); --  60 сек тайм-аут подключения
      For curs in (Select *
                     from UT_FILEFTPSEND_PREP
                    where STATUSSEND <> 'Отправлен'
                      and rn in (164, 165, 166)) loop
        --для теста только три файла
        -- если записей нет, то цикл прекратится
        begin
          v_Status:=32767;
          dbms_output.get_lines(lines => v_Message, numlines => v_Status);
        
          ftp.ascii(p_conn => l_conn);
          ftp.put_remote_ascii_data(p_conn => l_conn,
                                    p_data => curs.filedata,
                                    p_file => 'Outbox\' || curs.filename);
          ftp.get_reply(l_conn); --ожидаем ответ от сервера 
        
          FOR linenum in 1 .. v_Status LOOP
            cLog := cLog || v_Message(linenum) || chr(13);
          end loop;
        
          update UT_FILEFTPSEND_PREP
             set STATUSSEND   = 'Отправлен',
                 CFTP_LOG     = cLog,
                 senddatatime = sysdate
           where RN = curs.rn;
          commit WORK; --обновляем таблицу снимая блокировку с записи
        
        exception
          WHEN OTHERS THEN
            BEGIN
              cLog := null;
              v_Status:=32767;
              dbms_output.get_lines(lines    => v_Message,
                                    numlines => v_Status);
              FOR linenum in 1 .. v_Status LOOP
                cLog := cLog || v_Message(linenum);
              end loop;
            
              update UT_FILEFTPSEND_PREP
                 set STATUSSEND   = 'Ошибка',
                     CFTP_LOG     = cLog,
                     senddatatime = sysdate
               where RN = curs.rn;
              commit WORK; --обновляем таблицу снимая блокировку с записи
            end;
        end;
      end loop;
    
      ftp.logout(l_conn);
      cLog := null;
      v_Status:=32767;
      dbms_output.get_lines(lines => v_Message, numlines => v_Status);
      FOR linenum in 1 .. v_Status LOOP
        cLog := cLog || v_Message(linenum) || chr(13);
      end loop;
      mess := 'Отправлено';
    
    exception
      WHEN OTHERS THEN
        BEGIN
          ftp.logout(l_conn);
          txt_ftp_log := 'Не удалось подключится к FTP';
          v_Status:=32767;
          dbms_output.get_lines(lines => v_Message, numlines => v_Status);
          FOR linenum in 1 .. v_Status LOOP
            cLog := cLog || v_Message(linenum);
          end loop;
          mess := 'Ошибка какая-то';
        END;
      
    end;
  else
    mess := 'Нет данных для отправки: ' || kolToSend;
  end if; -- если kolToSend 0   

end;
...
Рейтинг: 0 / 0
16.02.2018, 12:55
    #39602895
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_Grizzlyвызываю эту процедуру из приложения, а в логе пусто....
и куда записывется переменная cLog ?

ЗыЖ да и говонокода много
...
Рейтинг: 0 / 0
16.02.2018, 12:57
    #39602897
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Код: plsql
1.
2.
3.
4.
5.
update UT_FILEFTPSEND_PREP
              set STATUSSEND   = 'Ошибка',
                   CFTP_LOG     = cLog,
                    senddatatime = sysdate
              where RN = curs.rn;


Пишу в таблицу, в строку, которую обрабатываю в данный момент.

В коде есть мусор, т.к это "горячий код", который на ходу правлю и ищу ответ на свой вопрос
...
Рейтинг: 0 / 0
16.02.2018, 13:00
    #39602900
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Прикол в том, что если этот код просто скопировать в "Тестовое окно" и выполнить - то в cLog есть данные.... и они попадают в таблицу, а вот из процедуры она пустая...
...
Рейтинг: 0 / 0
16.02.2018, 13:06
    #39602907
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_GrizzlyБлин, я за все это время на форуме я вижу только троллинг вместо нормальной помощи....
Нормальная помощь была во втором посте (первом ответе) от Elic

Какая еще помощь от форума Вам нужна - совершенно не понятно. А пока вопрос задан таким образом, только и остается что троллить.
...
Рейтинг: 0 / 0
16.02.2018, 13:08
    #39602909
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_GrizzlyПрикол в том, что если этот код просто скопировать в "Тестовое окно" и выполнить - то в cLog есть данные.... и они попадают в таблицу, а вот из процедуры она пустая...Потому что dbms_output предназначен вовсе не для того, для чего ты его используешь, и, к тому же, обладает состоянием "Включено"/"Выключено".
...
Рейтинг: 0 / 0
16.02.2018, 13:40
    #39602941
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
ElicDr_GrizzlyПрикол в том, что если этот код просто скопировать в "Тестовое окно" и выполнить - то в cLog есть данные.... и они попадают в таблицу, а вот из процедуры она пустая...Потому что dbms_output предназначен вовсе не для того, для чего ты его используешь, и, к тому же, обладает состоянием "Включено"/"Выключено".

Наконец то, ответ на мой вопрос! Dbms_output.enable; и все заработало. Благодарю!
...
Рейтинг: 0 / 0
16.02.2018, 13:42
    #39602948
Dr_Grizzly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
123ййDr_Grizzlyвызываю эту процедуру из приложения, а в логе пусто....
и куда записывется переменная cLog ?

ЗыЖ да и говонокода много

Т.к начинающий в этом деле, сгораю от любопытства - что имеется в виду под термином "говонокода " касаемо моей процедуры?
...
Рейтинг: 0 / 0
16.02.2018, 13:59
    #39602966
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
Dr_GrizzlyНаконец то, ответ на мой вопрос! Dbms_output.enable; и все заработало. Благодарю!Это граната в зубы обезьяны :|
...
Рейтинг: 0 / 0
19.02.2018, 08:52
    #39603925
Обезьяна2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Лог FTP в CLOB?
ElicDr_GrizzlyНаконец то, ответ на мой вопрос! Dbms_output.enable; и все заработало. Благодарю!Это граната в зубы обезьяны :|

Почему?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Лог FTP в CLOB? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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