![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DOA Oracle не могу получить ошибку привызове процедуры. [D7]
ScoPal © (2006-09-26 10:51:00)При вызове процедуры, производящей update в таблице базы, не возвращается ошибка. Каким образом можно ее получить т.к. она точно есть, данные не обновились :(
Бугага (2006-09-27 03:11:00) [1]> for J in 1 .. HScan.H.Cols loop
> --insert into tmg_res t (t.hotstripid, t.scannumber,
> t.hmax, t.hmaxpos, t.bulgemax, t.bulgemaxpos, t.errcode,
> t.calcdate)
> -- values
> -- (HScan.HSId, HScan.ScanNo.W(J), HScan.HMaxVal.W(J)
> , HScan.HMaxPos.W(J), HScan.HBulgeVal.W(J), HScan.HBulgePos.W(J)
> , Null, sysdate);
> update tmg_profilscan t
> set t.hmaxpos = HScan.HMaxPos.W(J), t.bulgemax
> = HScan.HBulgeVal.W(J) where t.hotstripid = HScan.HSId and
> t.scannumber = HScan.ScanNo.W(J);
> end loop;
> end if;
А что возвращает запрос с выделенным WHERE?
Reindeer Moss Eater (2006-09-26 17:33:00) [2]Либо данных нет и поэтому ничего не обновилось.
Либо данные есть и они обновились. Но ты не видишь изменений потому что ищешь их в другой транзакции которая их пока не видит.
Чудес не бывает.
Reindeer Moss Eater (2006-09-26 17:30:00) [3]Нет ошибка не в этом... там сначала insert который ...
... который закоментарен и данных там никаких нет.
evvcom (2006-09-26 16:03:00) [4]> [5] ScoPal (26.09.06 15:07)
> там сначала insert
> а потом сразу же вот эта процедура
А нафига insert и сразу update? В одном insert, что не судьба сделать?
ANB (2006-09-26 15:33:00) [5]
> ScoPal (26.09.06 15:07) [5]
Пройди отладчиком в девелопере/тоаде, поставь печать
dbms_output.put_line(sql%rowcount);
и разбери свою ошибку. Она явно логическая, раз нет исключения.
ЗЫ. Возьми за правило - прежде чем пихать что то в делфи, если не уверен - отлаживать в девелопере/тоаде.
ScoPal (2006-09-26 15:07:00) [6]Нет ошибка не в этом... там сначала insert который отрабатывается и данные есть а потом сразу же вот эта процедура запускается и значение where точно выполняется, так как в insert вставляются значения для where.
Reindeer Moss Eater (2006-09-26 13:12:00) [7]данные не обновились :(
<Цитата>
Если нет ошибки и данные не обновились то значит написано такое where, которому не удовлетворила ни одна запись.
ScoPal (2006-09-26 12:08:00) [8]procedure SmoothStripThickness(AHSId in Integer, NBP in Integer, CutWidth In Number)
Is
U TVector;
X TColMatrix;
JErr Integer;
kmaxl Integer;
hmaxl Number;
kmaxr Integer;
hmaxr Number;
h Number;
L Integer;
BulgeMax Number;
BulgePos Integer;
Bulge Number;
I1 Integer;
I2 Integer;
begin
-----
else
for J in 1 .. HScan.H.Cols loop
--insert into tmg_res t (t.hotstripid, t.scannumber, t.hmax, t.hmaxpos, t.bulgemax, t.bulgemaxpos, t.errcode, t.calcdate)
-- values
-- (HScan.HSId, HScan.ScanNo.W(J), HScan.HMaxVal.W(J), HScan.HMaxPos.W(J), HScan.HBulgeVal.W(J), HScan.HBulgePos.W(J), Null, sysdate);
update tmg_profilscan t
set t.hmaxpos = HScan.HMaxPos.W(J), t.bulgemax = HScan.HBulgeVal.W(J) where t.hotstripid = HScan.HSId and t.scannumber = HScan.ScanNo.W(J) ;
end loop;
end if;
-----
end SmoothStripThickness;
evvcom (2006-09-26 11:09:00) [9]> [0] ScoPal (26.09.06 10:51)
Необновление данных еще не факт того, что процедура отработала с ошибкой. Напиши
update MyTable set Col1=null where 0=1
и ты никогда не получишь сообщение об ошибке (в случае присутствия соединения с БД и т.п.)
Бугага (2006-09-26 10:58:00) [10]текст процедуры?