powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOracleQuery и sys_refcursor
10 сообщений из 10, страница 1 из 1
TOracleQuery и sys_refcursor
    #39564154
sergey4iki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеется такой код
Код: 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
TOracleQuery и sys_refcursor
    #39564163
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а надо next правильно писать...
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564166
sergey4iki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin,
мда..спасибо, не обратил внимаение еще потому что rowcount у t2 выдовало 1 запись
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564181
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через датасет проще
хотя более ресурсоемко
Код: 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
TOracleQuery и sys_refcursor
    #39564215
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там нет FetchAll?
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564223
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanТам нет FetchAll?в каком места тама?
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564237
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxwadmanТам нет FetchAll?в каком места тама?
Даже и не знаю... У сессии может?
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564341
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanandreymxпропущено...
в каком места тама?
Даже и не знаю... У сессии может?прошерстил все исходники - FetchAll нету
а что он должен делать?
...
Рейтинг: 0 / 0
TOracleQuery и sys_refcursor
    #39564410
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторwhile not ods.Eof do
begin
inc(i);
ods.next;
end;

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

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
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOracleQuery и sys_refcursor
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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