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

Поиск:

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


Шустрый
*


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

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



В хр. процедуре создаю врем. таблицу, но она не создается. Хотя процедура компилится без ошибок и даже запускается. Вот текст процедуры: может я что не так делаю. Раньше писал для FireBird
Код

CREATE PROCEDURE db2admin.get_accounts_info ( INOUT io_id_estimate INTEGER,
                                    INOUT io_id_sestimate INTEGER,
                                    INOUT io_id_gr INTEGER,
                                    INOUT io_id_item INTEGER,
                                    INOUT io_id_sitem INTEGER,
                                    INOUT io_id_expense VARCHAR(5) )
    SPECIFIC db2admin.get_accounts_info
    DYNAMIC RESULT SETS 1

P1: BEGIN
    -- Объявить переменные
    DECLARE io_est_name VARCHAR(100) DEFAULT '';
    DECLARE io_sest_name VARCHAR(100) DEFAULT '';
    DECLARE io_gr_name VARCHAR(100) DEFAULT '';
    DECLARE io_item_name VARCHAR(101) DEFAULT '';
    DECLARE io_sitem_name VARCHAR(101) DEFAULT '';
    DECLARE io_exp_name VARCHAR(101) DEFAULT '';

    DECLARE rec_count INT DEFAULT 0;

    DECLARE cursor1 CURSOR WITH RETURN FOR
    SELECT b.id_estimate,
           b.id_sestimate,
           b.id_gr,
           b.id_item,
           b.id_sitem,
           b.id_expense,
           e.est_name,se.sest_name,gr.gr_name,i.item_name,si.sitem_name,n.exp_name
    FROM budjet b
         left join estimate e on e.id_estimate=b.id_estimate
         left join subestimate se on se.id_sestimate=b.id_sestimate
         left join itemgroup gr on gr.id_gr=b.id_gr
         left join itemekr i on i.id_item=b.id_item
         left join subitemekr si on si.id_sitem=b.id_sitem
         left join nexpense n on n.id_expense=b.id_expense
    WHERE b.id_estimate=io_id_estimate and
          COALESCE(b.id_sestimate,0)=COALESCE(io_id_sestimate,0) and
          COALESCE(b.id_gr,0)=COALESCE(io_id_gr,0) and
          COALESCE(b.id_item,0)=COALESCE(io_id_item,0) and
          COALESCE(b.id_sitem,0)=COALESCE(io_id_sitem,0) and
          COALESCE(b.id_expense,'')=COALESCE(io_id_expense,'')
    ORDER BY b.id_estimate;
    --Определение кол-ва записей
    SELECT count(b.id_estimate) INTO rec_count FROM budjet b
    WHERE b.id_estimate=io_id_estimate and
          COALESCE(b.id_sestimate,0)=COALESCE(io_id_sestimate,0) and
          COALESCE(b.id_gr,0)=COALESCE(io_id_gr,0) and
          COALESCE(b.id_item,0)=COALESCE(io_id_item,0) and
          COALESCE(b.id_sitem,0)=COALESCE(io_id_sitem,0) and
          COALESCE(b.id_expense,'')=COALESCE(io_id_expense,'')
    GROUP BY b.id_estimate;
    --#################################################################
    --
    DECLARE GLOBAL TEMPORARY TABLE SESSION.get_accounts_info_gtt(io_id_estimate INTEGER,
                                                             io_id_sestimate INTEGER,
                                                             io_id_gr INTEGER,
                                                             io_id_item INTEGER,
                                                             io_id_sitem INTEGER,
                                                             io_id_expense VARCHAR(5),
                                                             io_est_name VARCHAR(100),
                                                             io_sest_name VARCHAR(100),
                                                             io_gr_name VARCHAR(100),
                                                             io_item_name VARCHAR(100),
                                                             io_sitem_name VARCHAR(100),
                                                             io_exp_name VARCHAR(100))
    WITH REPLACE IN db2admin;
    --#################################################################
    OPEN cursor1;

    WHILE rec_count>0 do
        FETCH cursor1 INTO io_id_estimate,
                           io_id_sestimate,
                           io_id_gr,
                           io_id_item,
                           io_id_sitem,
                           io_id_expense,
                           io_est_name,io_sest_name,io_gr_name,io_item_name,io_sitem_name,io_exp_name;
        INSERT INTO SESSION.get_accounts_info_gtt VALUES ( io_id_estimate,
                           io_id_sestimate,
                           io_id_gr,
                           io_id_item,
                           io_id_sitem,
                           io_id_expense,
                           io_est_name,io_sest_name,io_gr_name,io_item_name,io_sitem_name,io_exp_name);
        SET rec_count = rec_count - 1;
    END WHILE;
    CLOSE cursor1;

END P1

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




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


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

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