Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает блок 
V
    Опции темы
ACMilian
Дата 22.10.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 5.9.2006
Где: Беларусь

Репутация: нет
Всего: нет



Есть такой блок.
Код

DECLARE
  NewRep BOOLEAN;
  CURSOR c_Check IS
    SELECT * FROM t152
    WHERE mes = decode(:mes,12,1,:mes+1) AND mesk = decode(:mesk,12,1,:mesk+1) 
      AND god = decode(:mes,12,:god+1,:god) AND proizv = :pr;
BEGIN
  OPEN c_Check;
  NewRep := c_Check%NOTFOUND;--true;
  CLOSE c_Check;
  IF NewRep  THEN
    IF :MES = :MESK THEN 
      INSERT INTO t152
         (k_obj, k_reag, k_prd, iocode, norma, mes, mesk, god, proizv, ost_nm, ost_nm_sys, k_kart, data)
      SELECT k_obj, k_reag, k_prd, iocode, norma, decode(:mes,12,1,:mes+1), decode(:mesk,12,1,:mesk+1),
             decode(:mes,12,:god+1,:god), :pr, ost_tek, ost_tek_sys, k_kart, data
      FROM t152
      WHERE mes=:mes AND mesk=:mesk AND god=:god AND proizv = :pr AND (OST_TEK <> 0 or OST_TEK_SYS <> 0);
    ELSE
      INSERT INTO t152
        (k_obj, k_reag, k_prd, iocode, mes, mesk, god, proizv, ost_nm, ost_nm_sys,
        ost_tek, ost_tek_sys, postav, postav_baza, r_plan, r_fakt, kol_prd, k_kart)
      SELECT k_obj, k_reag, k_prd, iocode, :mes, :mesk, :god, :pr,
        SUM(decode(mes, :mes, ost_nm, 0)),
        SUM(decode(mes, :mes, ost_nm_sys, 0)),
        SUM(decode(mes, :mesk, ost_tek, 0)),
        SUM(decode(mes, :mesk, ost_tek_sys, 0)),
        SUM(postav), SUM(postav_baza), SUM(r_plan), SUM(r_fakt), SUM(kol_prd), k_kart
      FROM t152
      WHERE mes BETWEEN :mes AND :mesk AND mesk = mes AND god = :god AND proizv = :pr         
      GROUP BY k_obj, k_reag, k_prd, iocode, :mes, :mesk, :god, :pr;
    END IF;
    COMMIT;
  END IF;    
END;

 Вся загвостка, как мне кажется, в строке   NewRep := c_Check%NOTFOUND. курсор сам пустой должен быть и тогда всё работает. Но почему то не отрабатывает как надо. Хотя если сделать 
Код

    SELECT * FROM t152
    WHERE mes = decode(:mes,12,1,:mes+1) AND mesk = decode(:mesk,12,1,:mesk+1) 
      AND god = decode(:mes,12,:god+1,:god) AND proizv = :pr;

то он не вернёт данных. где я касячу?
PM MAIL ICQ   Вверх
Sqlninja
Дата 22.10.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

Репутация: 13
Всего: 13



Атрибуты типа %NOTFOUND нужно считывать только после FETCH, иначе они будут NULL и вся логика - FALSE.


--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
ACMilian
Дата 22.10.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 5.9.2006
Где: Беларусь

Репутация: нет
Всего: нет



не внимательный я какой то. спасибо)) 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0375 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.