Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOracleQuery и sys_refcursor / 10 сообщений из 10, страница 1 из 1
05.12.2017, 09:33:56
    #39564154
sergey4iki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
имеется такой код
Код: 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.
var t1, t2: TOracleQuery;
begin
  t1 := TOracleQuery.Create(self);
  t2 := TOracleQuery.Create(self);
  t1.Session := OracleSession1;
  t2.Session := OracleSession1;
  t1.SQL.Add('DECLARE   i   sys_refcursor;BEGIN   :i :='
      +'rs_value.pkg_search.search_cadnum (v_soato             => 1, '
      +'                                   v_blocknum          => 2, '
        +'                                 v_parcelnumber      => 3,'
          +'                               v_date              => TO_DATE'
            +'                                                       (''01.01.2017'', '
              +'                                                      ''dd.mm.yyyy''  ),'
                  +'                       v_isnb              => 1);END;');
  t1.DeclareVariable('i', otCursor);
  t1.SetComplexVariable('i', t2);
 
  t1.Execute;
 
  t2.Execute;
  while not t2.Eof do
  begin
 
          MessageDlg('Fetched: '+t2.FieldAsString('cost'), mtInformation, [mbOk], 0);
          next;
 end;


сама функция из оракла возвращает 5 записей, но почему то в делфи возвращает только 1, не могу понять в чем дело, причем в справке по ДОА такой же пример, практически
...
Рейтинг: 0 / 0
05.12.2017, 09:45:59
    #39564163
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
а надо next правильно писать...
...
Рейтинг: 0 / 0
05.12.2017, 09:51:03
    #39564166
sergey4iki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
Tactical Nuclear Penguin,
мда..спасибо, не обратил внимаение еще потому что rowcount у t2 выдовало 1 запись
...
Рейтинг: 0 / 0
05.12.2017, 10:04:10
    #39564181
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
Через датасет проще
хотя более ресурсоемко
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var
  ses : TOracleSession;
  ods : TOracleDataSet;
  i : integer;
begin
  ses := TOracleSession.Create(Self);
  ses.LogonUsername := '**;
  ses.LogonDatabase := '**';
  ses.LogonPassword := '**';
  ses.Connected := true;
  ods := TOracleDataSet.Create(Ses);
  ods.Session := ses;
  ods.SQL.Text := 'begin open :p_cursor for select * from user_Tables; end;';
  ods.DeclareVariable('p_cursor', otCursor);
  ods.open;
  i := 0;
  while not ods.Eof do
  begin
    inc(i);
    ods.next;
  end;
  ShowMessage(inttostr(i)); // 329
...
Рейтинг: 0 / 0
05.12.2017, 10:39:21
    #39564215
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
Там нет FetchAll?
...
Рейтинг: 0 / 0
05.12.2017, 11:04:28
    #39564223
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
wadmanТам нет FetchAll?в каком места тама?
...
Рейтинг: 0 / 0
05.12.2017, 11:32:39
    #39564237
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
andreymxwadmanТам нет FetchAll?в каком места тама?
Даже и не знаю... У сессии может?
...
Рейтинг: 0 / 0
05.12.2017, 13:11:45
    #39564341
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
wadmanandreymxпропущено...
в каком места тама?
Даже и не знаю... У сессии может?прошерстил все исходники - FetchAll нету
а что он должен делать?
...
Рейтинг: 0 / 0
05.12.2017, 14:18:20
    #39564410
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
авторwhile not ods.Eof do
begin
inc(i);
ods.next;
end;

это и есть fetchall, если что.
...
Рейтинг: 0 / 0
05.12.2017, 20:55:27
    #39564722
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOracleQuery и sys_refcursor
может, речь об этом?

TOracleDataSet.CountAllRecords
Declaration
propertyCountAllRecords: Boolean;
Description
When this property is set to True, the datasetwill first count the number of records that the
query will return, before fetching the records. This is useful when you do not want to
immediately fetch all records when the dataset is opened, but still want the RecordCount to
reflect the total number of records. The scroll bar in a TDBGrid will display the correct position
if CountAllRecords is True, or if QueryAllRecords is set to True. Setting both properties to True
is not useful.

или этом

TOracleDataSet.QueryAllRecords
Declaration
propertyQueryAllRecords: Boolean;
Description
When set to True, all records will be retrieved from the database when the dataset is opened.
When set to False, records are retrieved when a data-aware component or a program
requests it. If a query can return many records, set this property to False if initial response
time is important.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOracleQuery и sys_refcursor / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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