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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите перевести на PL/SQL 
V
    Опции темы
KaKTyCc
Дата 29.6.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

                qPlansList->Active = false;
                qPlansList->SQL->Clear();
                qPlansList->SQL->Add("select * from metodist.plans p, metodist.groups g where p.id_speciality = g.id_speciality and p.semestr=g.semestr and g.group_name='"+eGroup->Text+"'");
                qPlansList->Active = true;
        //--------------------------------
                qAEGroups->Active = false;
                qPlansList->First();
                AnsiString ProverType;
                while(!qPlansList->Eof)
                {
                        qAEGroups->SQL->Clear();
                        if(qPlansList->FieldByName("exam")->AsInteger > 0)
                                ProverType = "Экзамен";
                        else if(qPlansList->FieldByName("zachet")->AsInteger > 0)
                                ProverType = "Зачет";
                        else
                                ProverType = "Курс. раб.";
                        qAEGroups->SQL->Add("insert into metodist.work_plans values(metodist.id_slave.nextval,"+qPlansList->FieldByName("id_plan")->AsString+","+qPlansList->FieldByName("id_group")->AsString+",null,'"+ProverType+"')");
                        qAEGroups->ExecSQL();
                        qPlansList->Next();
                }


этот код надо перенести в триггер

Код

select * from metodist.plans p, metodist.groups g where p.id_speciality = g.id_speciality 
and p.semestr=g.semestr and g.group_name=:New.group_name; --x

--все выбранное из первого запроса надо вставить
insert into metodist.work_plans values
(metodist.id_slave.nextval,x.id_plan,x.id_group,null, ProverType);


PL/SQL только начал изучать, помогите 
--------------------
Мой блог
PM MAIL WWW   Вверх
KaKTyCc
Дата 29.6.2006, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

 select * from metodist.plans p where p.id_speciality = :New.id_speciality 
 and p.semestr=:New.semestr; --x

insert into metodist.work_plans values
(metodist.id_slave.nextval,x.id_plan,x.id_group,null,ProverType);


надо как то в цикле организовать  
--------------------
Мой блог
PM MAIL WWW   Вверх
d_k
Дата 29.6.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если триггер -то строковой создать( for each row).
Или конструкция forall. 
PM MAIL   Вверх
KaKTyCc
Дата 2.7.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

CREATE OR REPLACE TRIGGER METODIST.T_GENWORKPLANS
AFTER INSERT
ON METODIST.GROUPS
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

get_plan plans%ROWTYPE;
v_session varchar2(10);

BEGIN

for rec in ( select * into get_plan from plans p where p.id_speciality = :New.id_speciality 
 and p.semestr=:New.semestr and p.version_year=:New.version_year) 
 
 loop
  if rec.exam > 0
   then v_session := 'Экзамен';
  elsif rec.zachet > 0
   then v_session := 'Зачет';
  else  
   v_session := 'Курс. раб.'; 
  end if;  
 insert into work_plans values
(id_slave.nextval,rec.id_plan,:New.id_group,null,v_session);
end loop;

END ;
/

 
--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0749 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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