Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle 8i, курсоры и временная таблица / 25 сообщений из 49, страница 1 из 2
15.12.2016, 16:57
    #39367978
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Коллеги,
помогите дилетанту правильно расставить комментарии внутри BEGIN . . . end get_PrebivanieTB; :
Код: 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.
 
procedure get_PrebivanieTB(
   cur_viborka out t_cursor
   ,xdate in date
 )
 is
  CURSOR cr IS
   SELECT * 
   FROM (
    SELECT 
      TRIM(obv.numopzn) numopzn
     ,slv.namvrr namvrr  
     ,jdk.numdoc numdoc
     ,obj.ABBROBJR  mesto
     ,SUBSTR(loc.coord, 1, 7) lat
     ,SUBSTR(loc.coord, 8, 8) lng
     ,obv.dateizm dateizm
    FROM
     . . .
     ,( SELECT . . .  FROM . . .   WHERE . . .) pv
     ,( SELECT . . .  FROM . . .   WHERE . . .) svyaz
     ,( SELECT . . .  FROM . . .   WHERE . . .  AND jdc.codformuv = sfu.codformuv (+) ) jdk
    WHERE 
      obv.DEL IS NULL
     AND obv.coddoc = jdk.coddoc (+)
      . . . 
     AND TRUNC(obv.dateizm) <= xdate
    ORDER BY
      obv.numopzn
     ,obv.dateizm DESC
  );
  
  xstr varchar2(30);

 BEGIN
   execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; 
   -- DELETE FROM  tbl_tmp_gis;
   -- COMMIT;

  xstr := '  ';
 
  --//-- Выборка первых строк в группах
  FOR row IN cr LOOP
   IF row.numopzn <> xstr THEN
    INSERT INTO tbl_tmp_gis VALUES (
      row.numopzn
     ,row.namvrr
     ,row.numdoc
     ,row.mesto
     ,row.lat
     ,row.lng
     ,row.dateizm 
    );
    xstr := row.numopzn;
   END IF; 
  END LOOP;
  
  -- COMMIT;
  
  open cur_viborka for 
  SELECT *
  FROM  tbl_tmp_gis;
 
  --  execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; 
  -- DELETE FROM  tbl_tmp_gis;
  -- COMMIT;

 end get_PrebivanieTB; 



С уважением,
Владимир
...
Рейтинг: 0 / 0
15.12.2016, 17:54
    #39368032
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеевпомогите дилетанту правильно расставить комментарии внутри BEGIN . . . end get_PrebivanieTB

Формат форума не позволит опубликовать столько нецензурных выражений.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2016, 17:58
    #39368037
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Dimitry Sibiryakov, сегодня, 17:54 [20008649]
> ...

А по делу,- слабо.
...
Рейтинг: 0 / 0
15.12.2016, 18:03
    #39368045
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеевА по делу,- слабо.
По делу - надо выкинуть всё между begin-end. И сами begin-end тоже выкинуть. Вместо всего
этого ужаса написать один запрос с оконными функциями. Или ещё и немного изменить
структуру БД чтобы обойтись без них. Работать будет быстрее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2016, 19:20
    #39368101
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Dimitry Sibiryakov, сегодня, 18:03 [20008708]

>Или ещё и немного изменить структуру БД ...
Не реально.

>По делу - надо выкинуть ...
Если не затруднит, покажите Ваш вариант.
Проверил 5-ть вариантов:
1. С аналитической функцией,
2. Обвал, - во временную таблицу записываю отсортированную выборку, её содержимое в курсор и клиенту,
3. Цикл по курсору - что прошу прокомментировать,
4. Дедушкин вариант - во временную таблицу записываю отсортированную выборку, далее SELECT c внутренним SELECT с MAX и группировкой --> содержимое в курсор и клиенту,
5. В лоб - 2-ва SELECT, один во FROM --> содержимое в курсор и клиенту.

п.с. в полную выборку входит UNION
...
Рейтинг: 0 / 0
15.12.2016, 19:27
    #39368104
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Dimitry Sibiryakov, сегодня, 18:03 [20008708]

>... Вместо всего этого ужаса написать один запрос с оконными функциями.
Если Вы имеете ввиду аналитическую функцию row_number(), то этот вариант на объекте не катит.
Кроме того вдвое медленнее (на тестовой системе) вариантов цикла и дедушки, а система интерактивная и время её реакции не последний фактор.
...
Рейтинг: 0 / 0
15.12.2016, 19:35
    #39368110
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеевЕсли Вы имеете ввиду аналитическую функцию row_number(), то этот вариант на объекте не катит.

Нет, я имел ввиду функцию FIRST_VALUE.

ВМоисеевКроме того вдвое медленнее (на тестовой системе) вариантов цикла и дедушки, а система
интерактивная и время её реакции не последний фактор.

Тогда Вам не стоило убивать возможность использования индексов для фильтрации своим TRIM().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2016, 20:15
    #39368129
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Dimitry Sibiryakov, сегодня, 19:35 [20009007]

>Нет, я имел ввиду функцию FIRST_VALUE.
Аналитические функции не работают на объекте.

>Тогда Вам не стоило убивать ...
Убрал, никакой реакции.
...
Рейтинг: 0 / 0
16.12.2016, 09:25
    #39368304
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеевЕсли Вы имеете ввиду аналитическую функцию row_number(), то этот вариант на объекте не катит.

Аналитические функции не работают на объекте.


Версию и редакцию СУБД в студию.
...
Рейтинг: 0 / 0
16.12.2016, 10:15
    #39368342
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
envВерсию и редакцию СУБД в студию.Сабж не виден?
...
Рейтинг: 0 / 0
16.12.2016, 10:56
    #39368394
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Elic,

Насколько я помню, row_number() и first_value() в 8i уже были (со второго кажется релиза).
...
Рейтинг: 0 / 0
16.12.2016, 10:57
    #39368396
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Elic,

пруф

посему уточняю возможности версии ТС
...
Рейтинг: 0 / 0
16.12.2016, 11:05
    #39368408
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
env пруф посему уточняю возможности версии ТСТ.е. ты не в курсе, что на любой версии 8i использование аналитики в PL/SQL (который, наш боря назвал "объектом") было крайне затруднено?
...
Рейтинг: 0 / 0
16.12.2016, 11:54
    #39368463
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Elic,

В том чиcле при использовании во view?
...
Рейтинг: 0 / 0
16.12.2016, 16:27
    #39368810
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>env, сегодня, 09:25 [20009923]

>Версию и редакцию СУБД в студию.

1. Сожалею, но на данный момент нужной информацией не обладаю.
2. На тестовом примере вариант аналитической функции примерно вдвое проигрывает варианту цикла.
3. Почему на 2-ой строке с -- execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; возникает ошибка?

С уважением,
Владимир.
...
Рейтинг: 0 / 0
16.12.2016, 16:34
    #39368816
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеев3. Почему на 2-ой строке с -- execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; возникает ошибка? http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
16.12.2016, 16:44
    #39368826
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Elic, сегодня, 16:34 [20013096]

>RTFM
К чему это, - есть конкретный вопрос по представленному тексту.
...
Рейтинг: 0 / 0
16.12.2016, 16:56
    #39368847
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеевК чему этоRTFM Error Messages (FAQ)
...
Рейтинг: 0 / 0
16.12.2016, 17:11
    #39368861
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеев3. Почему на 2-ой строке с -- execute immediate 'TRUNCATE TABLE tbl_tmp_gis'; возникает ошибка?


Хрустальный шар сегодня плохо работает, не видно ни кода ошибки ни описания
...
Рейтинг: 0 / 0
16.12.2016, 18:10
    #39368922
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Elic, сегодня, 16:56 [20013232]

>RTFM Error Messages (FAQ)
Что имею: ORA-08103
...
Рейтинг: 0 / 0
17.12.2016, 05:35
    #39369134
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Elicenv пруф посему уточняю возможности версии ТСТ.е. ты не в курсе, что на любой версии 8i использование аналитики в PL/SQL (который, наш боря назвал "объектом") было крайне затруднено?ТС еще и путается в показаниях, похоже на боевой и на программерской у него разные восьмерки
Oracle having first
...
Рейтинг: 0 / 0
17.12.2016, 14:42
    #39369263
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
>Вячеслав Любомудров, сегодня, 05:35 [20015047]

>... похоже на боевой и на программерской у него разные восьмерки ...
У меня такие-же подозрения, но сисадмин против.
Сети разные:
1. боевая - нормальная локальная сеть на базе Windows Server 2003 и Oracle 8i,
2. тестовая - виртуализация VMWare, Windows Server 2003 и Oracle 8i 1.7
3. Но вопрос, как правильно очищать временные таблицы Oracle, не потерял актуальности
...
Рейтинг: 0 / 0
17.12.2016, 14:46
    #39369265
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисееввопрос, как правильно очищать временные таблицы Oracle, не потерял актуальности

Завершением транзакции или сессии в зависимости от её (таблицы) типа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.12.2016, 16:00
    #39369282
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
ВМоисеев1. боевая - нормальная локальная сеть на базе Windows Server 2003 и Oracle 8i,
2. тестовая - виртуализация VMWare, Windows Server 2003 и Oracle 8i 1.7Это археологический музей или институт времени?
...
Рейтинг: 0 / 0
17.12.2016, 17:15
    #39369301
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle 8i, курсоры и временная таблица
Работает. Чего трогать-то?
Кассовую программу под DOS будем менять только потому что закон выпустили. А так бы еще работала и работала.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle 8i, курсоры и временная таблица / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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