Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Нулевой счетчик итераций / 13 сообщений из 13, страница 1 из 1
28.07.2010, 10:18
    #36763124
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Создаю в Reports Builder SQL Query, заношу в него запрос с созданием временной таблицы:
Код: plaintext
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.
CREATE GLOBAL TEMPORARY TABLE notactive
ON COMMIT PRESERVE ROWS
AS
SELECT fi.NAME,
c.contract_number card_number,
c.contract_name,
c.card_expire,
q.contract_number,
q.amount_available,
DECODE(c.contr_status,  14 , 'Card OK',  98 , 'Do not honor') status
FROM
(SELECT a.amount_available, a.contract_number, a.ID ac_id
--sum(abs(acc.item_total)) ttl
FROM acnt_contract a, acc_cycle acc
WHERE
    acc.acnt_contract__oid = a.ID
AND acc.account_name = 'Cl Deposit'
AND acc.date_from >= ROUND(SYSDATE - INTERVAL '10' MONTH, 'MM')
AND a.amnd_state = 'A'
AND a.con_cat = 'A'
AND a.contr_status =  51                                           -- Account OK
AND a.date_open < ROUND(SYSDATE - INTERVAL '10' MONTH, 'MM')
AND a.ccat <> 'C'                                              -- not BUSINESS

GROUP BY a.amount_available, a.contract_number, a.ID
HAVING SUM(ABS(acc.item_total)) =  0 

UNION ALL

SELECT a.amount_available, a.contract_number, a.ID ac_id
FROM acnt_contract a
WHERE
    a.amnd_state = 'A'
AND a.con_cat = 'A'
AND a.contr_status =  51                                           -- Account OK
AND a.date_open < ROUND(SYSDATE - INTERVAL '10' MONTH, 'MM')
AND a.ccat <> 'C'                                              -- not BUSINESS
AND NOT EXISTS (SELECT  1  FROM acc_cycle acc2
            WHERE
               acc2.acnt_contract__oid = a.ID
            AND acc2.account_name = 'Cl Deposit'
            AND acc2.date_from >= ROUND(SYSDATE - INTERVAL '10' MONTH, 'MM')
)

) q, acnt_contract c, f_i fi, serv_pack sp, opt_v_product op

/* appl_product p, */
WHERE c.amnd_state = 'A'
  AND c.acnt_contract__oid = q.ac_id
  AND c.contr_status =  14                    /*, 98 - ?  */  /* card ok only */
  AND c.product = op.appl_product
  AND op.tarif_plan_name <> 'A'
  AND op.fee_year <>  0 
  AND op.amnd_state = 'A'
  AND op.is_active = 'Y'

  AND c.serv_pack__id = sp.ID
  AND sp.amnd_state='A'
  AND sp.code <> 'PRUCREDE-ST1-M'
  AND sp.code NOT LIKE '%-STVP%-M'
  AND sp.code NOT LIKE '%-TST-M'
  AND sp.code NOT LIKE '%-BOX-M'
  AND sp.code NOT LIKE '%-CASE-M'
  AND sp.code NOT LIKE 'SCARD'
  AND fi.ID = c.f_i
  AND fi.amnd_state = 'A'

ORDER BY fi.branch_code
При нажатии ОК пишет: ORA-24333: нулевой счетчик итераций ==> CREATE GLOBAL TEMPORARY TABLE notactive
В чем может быть проблема?
...
Рейтинг: 0 / 0
28.07.2010, 11:51
    #36763389
flu4u
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Непонятно, что вы этим хотите добиться? Какой смысл создавать временную таблицу из reports?
...
Рейтинг: 0 / 0
29.07.2010, 02:09
    #36765272
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
flu4u,

временная таблица должна создаваться каждый раз при выполнении запроса. Т.к. результаты запроса используются в процедуре. Значит их надо куда-то сохранять. Есть вариант завести постоянную таблицу и очищать её потом. Мне просто интересна природа возникновения ошибки.
...
Рейтинг: 0 / 0
29.07.2010, 06:10
    #36765303
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Создана таблица постоянная. При попытке записать запрос со вставкой данных в таблицу, появляется ошибка:
Код: plaintext
1.
INSERT INTO addinfo.notactive
   SELECT   fi.NAME, c.contract_number card_number, c.contract_name, ...
Ошибка:
Код: plaintext
The SELECT statement may not contain an 'INTO' clause
В справке написано, что инту не используется. А как тогда вставить результаты запроса в таблиц из билдера? Или может есть способ в самом билдере как-то сохранить результаты?
...
Рейтинг: 0 / 0
29.07.2010, 06:52
    #36765314
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
До сих пор непонятно зачем вам создавать таблицу - в SQL Query должен быть запрос типа select.
Его результаты в репорте можете использовать как угодно.
...
Рейтинг: 0 / 0
29.07.2010, 07:11
    #36765320
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Алымов Анатолий,

а как обратиться к результату запроса?
...
Рейтинг: 0 / 0
29.07.2010, 08:08
    #36765345
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Советую хотя бы прочитать первые шаги reports, чтобы не было таких вопросов.
Вводный курс есть на сайте http://baks.gaz.ru/
...
Рейтинг: 0 / 0
29.07.2010, 08:51
    #36765377
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Алымов Анатолий,

спасибо большое, очень актуально, когда:
а) надо срочно
б) почти закончился трафик
...
Рейтинг: 0 / 0
29.07.2010, 11:03
    #36765615
flu4u
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
По-прежнему не очень понятно, чего вы хотите добиться. Вы пишете, что результаты запроса будут использоваться в процедуре. А сам запрос больше не будет использоваться (например, для вывода данных)? Если запрос в дальнейшем больше не будет использоваться, то для чего вам вообще таблицы (временные или постоянные)? Сделайте в вашей процедуре цикл или инициализацию переменных по данному запросу и всё. Если запрос в дальнейшем будет использоваться, то можно создать вычисляемые столбцы на его основе. Если все же нужна временная таблица (зачем - я пока не понял), то можно создать хранимую процедуру, наполняющую временную таблицу, а в reports просто вызывать ее в триггере BeforeReport.
...
Рейтинг: 0 / 0
30.07.2010, 12:02
    #36768137
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Katsy,

0. Для решения какой задачи, средствами Report Builder, был выбран подход процедура + временная таблица?
1. Забудьте про ms sql подход с созданием/удалением временных таблиц. Здесь он не имеет смысла в 999 случаях из 1000.
...
Рейтинг: 0 / 0
30.07.2010, 12:20
    #36768199
OmegaMale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Katsy,

тоже не всё прочитал...

DDL-выражения нужно писать в Program-Units, в том числе и текстах триггеров отчёта.
...
Рейтинг: 0 / 0
09.08.2010, 05:02
    #36781362
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
Решили задачу через другую систему.
...
Рейтинг: 0 / 0
09.08.2010, 06:42
    #36781384
Katsy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нулевой счетчик итераций
flu4u,

результаты запроса используются для вывода результатов и для выполнения определенных действий на результатами

env,

задача такая: выбрать карты по определенным параметрам и заблокировать их. Так вот выборка отрабатывает от получаса до полутора часов, следовательно, запрос нужно запускать только 1 раз, а дальше оперировать с результатами.

OmegaMale,

спасибо, тоже вылазила ошибка, уже не помню какая.
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Нулевой счетчик итераций / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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