CftClub.ru
Клуб специалистов ЦФТ-Банк

Обновлению записи таблицы

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Emel
Участник со стажем


Вступление в Клуб: 02.07.2007
СообщениеСб Апр 12, 2008 11:25   Обновлению записи таблицы Ответить с цитатой
Полезность: Нет оценки
Привет Всем
Есть программа по обновлению записи таблицы
Код:

procedure Dh_plastKart( P_DAT in [DATE] ) is
v_this ref [BIB_ENN071211];
begin
for (
select   a
   (
    a.code : Code
   , a%id : Id
     )
in   ::[BIB_ENN071211]
   )
loop
   v_this := a.Id;
   if v_this = 66216403 then
      v_this->[BIB_EDIT#AUTO]( '0123', 'Форма', false, 'Шаблон',123,'Выполнить');
      end if;
   end loop;
end;



Вопрос : Можно ли обновить не все поля, а только часть из них?
например значение поле '0123'
оставить как было в таблице.
Пробовал вместо параметра поставить null
записывает null.

Спасибо
faded
Участник со стажем


Вступление в Клуб: 17.09.2007
СообщениеСб Апр 12, 2008 11:58    Ответить с цитатой
Полезность: Нет оценки
1. написать новую операцию
2. вместо вызова операции просто менять поле
3. в выборке получать значения реквизитов текущие и подавать те же значения в параметры, еоторые не надо изменять
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеСб Апр 12, 2008 15:46    Ответить с цитатой
Полезность: Нет оценки
Можно. Код меняем следующим образом:
Код:

procedure Dh_plastKart( P_DAT in [DATE] ) is
v_this ref [BIB_ENN071211];
begin
for (
select a
(
a.code : Code
, a%id : Id
)
in ::[BIB_ENN071211]
)
loop
v_this := a.Id;
if v_this = 66216403 then
v_this.[НАИМЕНОВАНИЕ_РЕКВИЗИТА]:='0123';
end if;
end loop;
end;
German
Профи


Вступление в Клуб: 25.06.2007
СообщениеСб Апр 12, 2008 21:44   Re: Обновлению записи таблицы Ответить с цитатой
Полезность: Нет оценки
Вопрос : Можно ли обновить не все поля, а только часть из них?
например значение поле '0123' оставить как было в таблице.

Emel, Ваша задача решается так:

Код:
begin
   for x in ::[BIB_ENN071211] where x = 66216403 loop
      x.[РЕКВИЗИТ_1] := ЗНАЧЕНИЕ_1;
      x.[РЕКВИЗИТ_2] := ЗНАЧЕНИЕ_2;
   end loop;
end;

_________________
Homo homini
ggrey
Участник со стажем


Вступление в Клуб: 01.10.2007
СообщениеПн Апр 14, 2008 09:47    Ответить с цитатой
Полезность: Нет оценки
Код:
 update a(a.[РЕКВИЗИТ] = 'ЗНАЧЕНИЕ') in ::[BIB_ENN071211]
where a = 66216403;

Так будет быстрее, если конечно тип не имеет предков (потомков) с этим же реквизитом.
Emel
Участник со стажем


Вступление в Клуб: 02.07.2007
СообщениеВт Апр 15, 2008 10:57    Ответить с цитатой
Полезность: Нет оценки
Спасибо Всем !!!!!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru