Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вернуть результат выполнения функции FastReport / 8 сообщений из 8, страница 1 из 1
26.06.2019, 09:53
    #39830584
morhellene
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
Есть query вида
DECLARE
a1 varchar2(1024);
a2 varchar2(2024);
begin
a1:= function(:par);
dbms_output.put_line(a1);
end;


Вопрос как забрать результат выполнения dbms_output.put_line(a1) (возвращает результат успешно/неуспешно) в отчет для дальнейшего анализа? Точнее как просто передать какой-то результат выполнения функции в
Через select ...from dual функцию оформить не выйдет.
Спасибо
...
Рейтинг: 0 / 0
26.06.2019, 10:09
    #39830592
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
из моего проекта:

Код: sql
1.
   select FUNC_GET_DBMS_OUTPUT from dual;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or replace function FUNC_GET_DBMS_OUTPUT 
return clob is
   Result   clob;
   sLine    varchar2(255);
   iStatus  integer;
begin
   DBMS_LOB.CreateTemporary(Result,true);
   
   loop                  
      DBMS_OUTPUT.GET_LINE (sLine, iStatus); 
      exit when iStatus<>0;
      Result:=Result||sLine||chr(13)||chr(10);
   end loop;

   return(Result);
end FUNC_GET_DBMS_OUTPUT;
...
Рейтинг: 0 / 0
26.06.2019, 10:11
    #39830594
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
P.S.

morhelleneЧерез select ...from dual функцию оформить не выйдет.

не понял мысли
...
Рейтинг: 0 / 0
26.06.2019, 10:17
    #39830599
morhellene
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
Кроик Семён, select function(:par) from dual
дает
ORA-14552: невозможно выполнение DDL, фиксации или отката внутри запроса или DML операции
...
Рейтинг: 0 / 0
26.06.2019, 11:48
    #39830646
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
Это код функции. Её нужно создать . Она сохранится в базу и будет там существовать под именем FUNC_GET_DBMS_OUTPUT

Впоследствии её можно будет вызвать из SQL
...
Рейтинг: 0 / 0
26.06.2019, 12:00
    #39830651
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
P.S.
можно и без создания функции конечно, т.е. воспользоваться таким анонимным SQL блоком :
Код: pascal
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.
var
   Q     : TOracleQuery; // DOA
   sTxt  : string;
begin
   Q := TOracleQuery.Create(nil);
   try
      Q.Session := .....
      
      Q.DeclareVariable(':RES', otCLOB);

      Q.SQL.Add('declare');
      Q.SQL.Add('   sLine    varchar2(255);');
      Q.SQL.Add('   iStatus  integer;');
      Q.SQL.Add('begin');
      Q.SQL.Add('   DBMS_LOB.CreateTemporary(:RES, true);');
      Q.SQL.Add('');
      Q.SQL.Add('   loop');
      Q.SQL.Add('      DBMS_OUTPUT.GET_LINE (sLine, iStatus);');
      Q.SQL.Add('      exit when iStatus<>0;');
      Q.SQL.Add('      :RES := :RES||sLine||chr(13)||chr(10);');
      Q.SQL.Add('   end loop;');
      Q.SQL.Add('end;'   

      Q.Execute();
   
      sTxt := Q.GetVariable(':RES');
   finally
      FreeAndNil(Q);
   end;
   
   ShowMessage('DBMS_OUTPUT = '+#13#10+
               sTxt);
end;               



но с функцией все-таки элегантнее на мой взгляд
...
Рейтинг: 0 / 0
26.06.2019, 13:44
    #39830712
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
В каком месте тут фигурирует FastReport ?
...
Рейтинг: 0 / 0
26.06.2019, 14:43
    #39830752
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вернуть результат выполнения функции FastReport
Это следующий шаг. Не забегайте вперёд.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вернуть результат выполнения функции FastReport / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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