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

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

почему обновления только в одной строке? [D6, IB6.x, FireBird]


Roki ©   (2003-03-11 14:41:00) 

Мастера, помогите.
Такая вот процедура:

CREATE PROCEDURE GET_DATA
AS
declare variable phone_n integer;
declare variable fio_n varchar(255);
declare variable id_n integer;
declare variable d_prop_n date;
BEGIN
for
select phone, fio, id, d_prop
from ntu
into :phone_n, :fio_n, :id_n, :d_prop_n
do
begin
update name_lg
set fio=:fio_n, id=:id_n, d_prop=:d_prop_n
where phone=:phone_n;
suspend;
end
END

Как сделать чтобы все нужные строки обноляла?


zacho   (2003-03-11 20:53:00) [1]

Suspend тут нафиг не нужен, т.ч. или баг в твоей сборке FB (кстати, написал бы конкретно, с каким клоном/сборкой IB/FB работаешь), либо ты чего-то не сказал:)


Silver_   (2003-03-11 16:11:00) [2]


update name_lg t1, ntu t2
set t1.fio=t2.fio
where t1.phone=t2.phone


попробуй так


Roki   (2003-03-11 15:53:00) [3]


> Smashich © (11.03.03 15:41

я пробовал и без suspend - не работает, я правда запускаю ее в IBMAnegere... Может он глючит?


Silver_   (2003-03-11 15:44:00) [4]


> update name_lg t1
> set t1.fio=(select t2.fio from ntu t2 where t1.phone=t2.phone)

добавь
whereи условие типа t1.phone=t2.phone (чтоб update проходил тока по нужным записям)

вот над условием помозгуй сам не особо всматривался в код :))


Smashich   (2003-03-11 15:42:00) [5]

a suspend нужен для вывода данных....и не рекомендуеться к использование в процедурах не возвращающих ничего


Smashich   (2003-03-11 15:41:00) [6]

Create PROCEDURE Temp
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE Str1 char (25);
BEGIN
FOR SELECT ID,Str1 FROM MyTable
INTO :ID,:Str1 DO
BEGIN
UPDATE MyTable SET
Str2=:Str1
WHERE ID=:ID;
END
END


работает


Roki   (2003-03-11 15:36:00) [7]

Как тогда можно сделать? Может есть какие-то другие способы?


Roki   (2003-03-11 15:25:00) [8]

самое интересное, что если выполнить такой запрос, то
update name_lg t1
set t1.fio=(select t2.fio from ntu t2 where t1.phone=t2.phone)

все обновления делаются, но для все полей fio - там где телефон не совпал, там NULL :((((


Roki   (2003-03-11 15:20:00) [9]

ну что никогда никто не сталкивался с одновлением данных из процедуры?


Roki   (2003-03-11 14:56:00) [10]


> suspend;

без этого вообще ничего не обновляет, мастера как быть?


Наверх

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