![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уважаемые, помогите... [D6, MSSQL]
xn0bys © (2003-01-09 09:45:00)НАРОД! промблема c БД: при запросе SQL, вызываю stored procedure, там Update, но она почему-то удаляет запись?
вот stored procedure:
CREATE PROCEDURE pr_Modify (@id_tproc int, @mode char(6),...,@kl char(3))
AS
declare @date datetime
set @date=GETDATE()
if @mode="insert"
begin
insert into tproc(id_obj,...,kl)
values (@id_obj,...,@kl)
insert into tproc_mode(date,mode,id_obj,...,kl)
values (@date,@mode,@id_obj,...,@kl)
end else
if @mode="delete"
begin
delete from tproc
where tproc.id=@id_tproc
insert into tproc_mode(date,mode,id_obj,...,kl)
values (@date,@mode,@id_obj,...,@kl)
end else
if @mode="modify"
begin
update tproc
set id_obj=@id_obj,..., kl=@kl
where tproc.id=@id_tproc
insert into tproc_mode(date,mode,id_obj,...,kl)
values (@date,@mode,@id_obj,...,@kl)
end else
if @mode="delobj"
begin
set @mode="delete"
DECLARE @CursorVar CURSOR
SET @CursorVar = CURSOR READ_ONLY FAST_FORWARD
FOR SELECT id_obj,...,kl FROM tproc where id_obj=@id_obj
OPEN @CursorVar
FETCH NEXT FROM @CursorVar into @id_obj,...,@kl
WHILE @@FETCH_STATUS = 0
BEGIN
insert into tproc_mode(date,mode,id_obj,...,kl)
values (@date,@mode,@id_obj,...,@kl)
FETCH NEXT FROM @CursorVar into @id_obj,...,@kl
END
close @CursorVar
DEALLOCATE @CursorVar
delete from tproc
where tproc.id_obj=@id_obj
end
А вот я ее вызавыю:
sp_prmod.StoredProcName:="pr_Modify;1";
sp_prmod.ParamByName("@mode").Value:="modify";
sp_prmod.ExecProc;
Может кто знает ???
Mike_Goblin (2003-01-17 10:26:00) [1]>2 Mike_Goblin,
>Под Delphi"ским, вроде все нормально.
а под MS SQL debuger, который позволяет отлаживать хранимые процедуры?
AlexSV (2003-01-17 10:09:00) [2]> xn0bys
подозреваю, что Ваша проблема заключена в этих точках
if @mode="modify"
begin
update tproc
set id_obj=@id_obj, ..., kl=@kl
where tproc.id=@id_tproc
Догадаться сложно, но если бы процедура была приведена полностью, то ответ получили бы сразу.
Наверное в этих точках апдейтится ключ, но Вам виднее :)
xn0bys (2003-01-17 08:21:00) [3]Люди, АУ, ну хоть кто-нить поможет или нет?
Я прогонял через профайлер, там всё ок, типа пишет что модифицирует, процедура delete НЕ выполняется, а запись в базе данных все равно удаляется!
HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!
xn0bys (2003-01-09 10:04:00) [4]SergSuper
Вообще-то эту процу до меня писали :)
SergSuper (2003-01-09 09:59:00) [5]1. Вобще-то Вы создаёте одну процедуру (pr_Modify), а запускаете другую (pr_Modify ;1)
2. К делу не относится, но зачем же Вы тут используете курсор? Без него будет и намного короче и намного быстрее работать. Просто плакать хочется, видя такое...
xn0bys (2003-01-09 09:54:00) [6]2 Mike_Goblin,
Под Delphi"ским, вроде все нормально.
xn0bys (2003-01-09 09:53:00) [7]2 Stone,
Я зная, просто попробовал.
xn0bys (2003-01-09 09:52:00) [8]Да, вот еще что:
В tproc запись удаляется,
а в tproc_mode, все нормально добавляется?
Mike_Goblin (2003-01-09 09:51:00) [9]а под дебагером гонять пробовал?
stone (2003-01-09 09:51:00) [10]В данном случае не обязательно писать else в конце конструкции if