Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вывод dbms_output ghb из анонимной процедуры к Oracle python 3 / 2 сообщений из 2, страница 1 из 1
30.03.2017, 12:20
    #39429954
pamibol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод dbms_output ghb из анонимной процедуры к Oracle python 3
Добрый день.
Вопрос в следующем.
Есть анонимная процедура которая выполняется на нескольких сотнях БД
Примерно такая
Код: 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.
declare
 vOutInfo varchar(400);
  procedure 
  UpdateAccessLevelInOC(vLastName IN varchar2,
                      vName IN varchar2,
                      vSName IN varchar2,
                      vAccessLevel IN number,
                      vIfUserID IN number,
                      vOutInfo OUT varchar2)
  is
    vUserID number;
    vLNS  varchar2(100);
    vGenerateEvent varchar2(1000);
    vErrMoreRows exception;
    pragma Exception_Init(vErrMoreRows, -01422);
  begin
    if (vIfUserID is not null) then
       тра та та 
    else   
     Тра та та 
    end if;

  update Тра та та
  set ля ля ля 

  if (sql%rowcount = 1) then
    commit;
    vGenerateEvent := '”становить уровень допуска"
    vOutInfo := vGenerateEvent;
  else
    rollback;
  end if;

  exception
    when NO_DATA_FOUND then
      vOutInfo := 'ERROR NOT FOUND USER WITH LAST NAME = ' || vLastName || ' NAME = ' || vName || ' SECOND NAME = '|| vSName;
    when vErrMoreRows then
       vOutInfo := 'ERROR FOUND MORE 1 USER WITH LAST NAME = ' || vLastName || ' NAME = ' || vName || ' SECOND NAME = '|| vSName;
    when others then
      vOutInfo := SQLERRM;
      
end;
begin
  UpdateAccessLevelInOC(vLastName => ':vLastName:',vName => ':vName:',vSName =>':vSName:',vIfUserID=>:vIfUserID:,vAccessLevel =>:vAccessLevel:, vOutInfo => vOutInfo); 
  dbms_output.put_line(vOutInfo);
end;



суть не в самой процедуре, процедура работает верно и делает, что ей положено.

Когда выполняешь ее в PL\SQL Developer или любой другой среде выполнения то получаю в ответ вывод через dbms_output.put_line(vOutInfo)
здесь проблем нет.

Но мне необходимо, что бы эта процедура выполнялась в Python.
С учетом того, что она не хранимая а анонимная я использую не
Код: python
1.
 cur.callproc('Имя процедуры', (Парамерты))


а считываю текст процедуры из файла пеняю необходимые параметры и выполняю через
Код: python
1.
cur.execute(vEcecuteSQL)


процедура выполняется в базе все меняется как и требовалось не я не знаю как получить вывод dbms_output или OUT который есть процедуре.
Если использовать всякие Fetch то полую сообщение о том, что в
Код: python
1.
cur.execute(vEcecuteSQL)

нет SQL запроса типа
Код: python
1.
2.
    print(cur.fetchall())
cx_Oracle.InterfaceError: not a query



Народ, кто может посоветовать как получить вывод из анонимной процедуры?
...
Рейтинг: 0 / 0
31.03.2017, 06:59
    #39430592
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод dbms_output ghb из анонимной процедуры к Oracle python 3
pamibol,


Ну читай документацию по Cl_Oracle.
Очень может быть, что такая возможность вообще не поддерживается.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вывод dbms_output ghb из анонимной процедуры к Oracle python 3 / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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