Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цикл в хранимой процедуре [D7, IB7.5]


RomanH ©   (2006-04-17 14:17:00) 

Мастера подскажите каким образом можно сделать такую конструкцию
While not DataSet1.EOF do
begin
      if DataSet1.FieldValue[N1]=DataSet2.FieldValue[N1] then
                             Действие1
     else
                             Действие2    
end;

 в хранимой процедуре.


Johnmen   (2006-04-17 15:27:00) [1]

Да в том же самом LangRef.pdf про всё это написано. В спецификации команд SELECT и DELETE.
Ещё полезно просто спецификацию SQL92 почитать. Где искать не скажу, не помню...


Sergey13   (2006-04-17 15:25:00) [2]

2 [8] RomanH ©   (17.04.06 15:18)
DELETE FROM Table1 T1 WHERE EXISTS (SELECT 1 FROM Table2 T2 T1.Field=T2.Field)
Подстрочник.
Удалить из таблицы1 записи, для которых существует хотя бы одна запись в таблице2 с кодом, таким же как и в таблице1.
8-)
ЗЫ: Поиши в сети по "ГРУБЕР + SQL" для понимания.


RomanH   (2006-04-17 15:18:00) [3]


> Johnmen ©

Подскажите где можно почитать про понимание языка SQL.
Мне бы тоже хотелось бы как вы, все это реализовать двумя строчками.
Да вторую строку я понимаю полностью а вот с первой ни как не соображу.
DELETE FROM Table1 T1 WHERE EXISTS (SELECT 1 FROM Table2 T2T1.Field=T2.Field)


Johnmen   (2006-04-17 15:09:00) [4]

1. DELETE FROM Table1 T1 WHERE EXISTS (SELECT 1 FROM Table2 T2 WHERE T1.Field=T2.Field)
2. INSERT INTO Table2 SELECT * FROM Table1


Desdechado   (2006-04-17 15:07:00) [5]

если сравнение по одному полю, то все проще
delete from T1 where N1 IN( select N2 from T2 );
insert into t2 select * from t1


RomanH   (2006-04-17 15:01:00) [6]

Имеются таблицы Table1 и Table2.
В хранимой процедуре необходимо сравнить значения из Table1 со значениями Table2. Если такие записи существуют то их надо удалить из Table1. Оставшиеся записи таблицы Table1 добавить  в Table2.


Johnmen   (2006-04-17 14:54:00) [7]


> Подскажите в таком случае будут ли все значения N1 из Table1
> сравниваться со всеми значениями Table2.


Не понял... Каждое с каждым что ли??? Зачем???
Что вообще надо?


RomanH   (2006-04-17 14:46:00) [8]

Я читаю документацию (LangRef.pdf) .Не могу понять как это работает

select count(*) from Table1 into Rec_Count;
if (i<=Rec_Count) do
begin
for select N1 from Table1 into :NN1 do
  begin
        select N1 from Table 2 into :NN2
        if NN1=NN2 then Действие
  end
i=i+1;
end;

Подскажите в таком случае будут ли все значения N1 из Table1 сравниваться со всеми значениями Table2.


Johnmen   (2006-04-17 14:24:00) [9]

FOR SELECT ...

А почему ты не читаешь документацию?


RomanH   (2006-04-17 14:19:00) [10]

Извините Next забыл набисать
While not DataSet1.EOF do
begin
     if DataSet1.FieldValue[N1]=DataSet2.FieldValue[N1] then
                            Действие1
    else
                            Действие2    
     DataSet1.Next;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо