Alfredo
Дата: 08.06.2000 14:23:34
Запрос на модификацию данных отобранных из таблицы с помощью перекрестного запроса:
/*Пояснения: Перед модификацией я проверяю изменилось ли значение, если да то проверяю,
не является ли оно пустым, почему я проверяю неравно ли оно нулю, так как при выборке,
я проверяю есть ли такая запись, если нет то в таблицу вывожу нуль, и так для каждого поля. */
/*1 строка*/DECLARE @Pdata char(8) , @Ksmen smallint
SET @Pdata = 20000512
SET @Ksmen = '1'
/* time */
if ( :OLD_time <> :time )
BEGIN
update dbo.DATA5
set
Time = :Time
where
Time =:OLD_Time and
data=:OLD_data
END
/* 1 */
if ( :OLD_num_KA <> :num_KA)
BEGIN
if ( :OLD_num_KA <> '0' ) and ( :OLD_num_KA <> '')
BEGIN
update dbo.DATA5
set
znach =:num_KA
where
kod_param = 1 and
data = :OLD_data and
time = :OLD_time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 1, :num_KA)
END
END
/* 2 */
if ( :OLD_Clear_f_f <> :Clear_f_f )
BEGiN
if ( :OLD_Clear_f_f <> '0' ) and ( :OLD_Clear_f_f <> '')
BEGIN
update dbo.DATA5
set
znach =:Clear_f_f
where
kod_param = 2 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 2, :Clear_f_f)
END
END
/* 3 */
if ( :OLD_Clear_obch <> :Clear_obch)
BEGIN
if ( :OLD_Clear_obch <> '0' ) or ( :OLD_Clear_obch <> '')
BEGIN
update dbo.DATA5
set
znach =:Clear_obch
where
kod_param = 3 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 3, :Clear_f_f)
END
END
/* 4 */
if ( :OLD_Clear_s_s <> :Clear_s_s)
BEGIN
if ( :OLD_Clear_s_s <> '0' ) or ( :OLD_Clear_s_s <> '')
BEGIN
update dbo.DATA5
set
znach =:Clear_s_s
where
kod_param = 4 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 4, :Clear_s_s)
END
END
/* 5 */
if ( :OLD_Ciklon_lev_f_f <> :Ciklon_lev_f_f )
BEGIN
if ( :OLD_Ciklon_lev_f_f <> '0' ) or ( :OLD_Ciklon_lev_f_f <> '')
BEGIN
update dbo.DATA5
set
znach =:Ciklon_lev_f_f
where
kod_param = 5 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 5, :Ciklon_lev_f_f)
END
END
/* 6 */
if ( :OLD_Ciklon_lev_obch <> :Ciklon_lev_obch )
BEGIN
if ( :OLD_Ciklon_lev_obch <> '0' ) or ( :OLD_Ciklon_lev_obch <> '')
BEGIN
update dbo.DATA5
set
znach =:Ciklon_lev_obch
where
kod_param = 6 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 6, :Ciklon_lev_obch)
END
END
/* 7 */
if ( :OLD_Ciklon_prav_f_f <> :Ciklon_prav_f_f)
BEGIN
if ( :OLD_Ciklon_prav_f_f <> '0' ) or ( :OLD_Ciklon_prav_f_f <> '')
BEGIN
update dbo.DATA5
set
znach =:Ciklon_prav_f_f
where
kod_param = 7 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 7, :Ciklon_prav_f_f)
END
/* 8 */
if ( :OLD_Ciklon_prav_obch <> '0' ) or ( :OLD_Ciklon_prav_obch <> '')
BEGIN
update dbo.DATA5
set
znach =:Ciklon_prav_obch
where
kod_param = 8 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 8, :Ciklon_prav_obch)
END
END
/* 9 */
if ( :OLD_S_S <> :S_S)
BEGIN
if ( :OLD_S_S <> '0' ) or ( :OLD_S_S <> '')
BEGIN
update dbo.DATA5
set
znach =:S_S
where
kod_param = 9 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 9, :S_S)
END
END
/* 10 */
if ( :OLD_Proc_Prod <> :Proc_Prod)
BEGIN
if ( :OLD_Proc_Prod <> '0' ) or ( :OLD_Proc_Prod <> '')
BEGIN
update dbo.DATA5
set
znach =:Proc_Prod
where
kod_param = 10 and
data = :OLD_Data and
time = :OLD_Time
END
ELSE
BEGIN
insert into dbo.DATA5
(Data, time, kod_smeni, kod_param, znach)
values
( @Pdata , :Time, @Ksmen, 10, :Proc_Prod)
END
END
/*последняя строка*/
P.S. Готов переписываться со всеми желающими !