Вниз
Скачать: CL | DM;

Уважаемые, помогите...   Найти похожие ветки 

← →
xn0bys ©   (2003-01-09 09:45) [0]

НАРОД! промблема 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-09 09:51) [1]

а под дебагером гонять пробовал?


← →
stone ©   (2003-01-09 09:51) [2]

В данном случае не обязательно писать else в конце конструкции if


← →
xn0bys ©   (2003-01-09 09:52) [3]

Да, вот еще что:
В tproc запись удаляется,
а в tproc_mode, все нормально добавляется?


← →
xn0bys ©   (2003-01-09 09:53) [4]

2 Stone,
Я зная, просто попробовал.


← →
xn0bys ©   (2003-01-09 09:54) [5]

2 Mike_Goblin,
Под Delphi"ским, вроде все нормально.


← →
SergSuper   (2003-01-09 09:59) [6]

1. Вобще-то Вы создаёте одну процедуру (pr_Modify), а запускаете другую (pr_Modify ;1)

2. К делу не относится, но зачем же Вы тут используете курсор? Без него будет и намного короче и намного быстрее работать. Просто плакать хочется, видя такое...



← →
xn0bys ©   (2003-01-09 10:04) [7]

SergSuper
Вообще-то эту процу до меня писали :)


← →
xn0bys ©   (2003-01-17 08:21) [8]

Люди, АУ, ну хоть кто-нить поможет или нет?

Я прогонял через профайлер, там всё ок, типа пишет что модифицирует, процедура delete НЕ выполняется, а запись в базе данных все равно удаляется!

HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!


← →
AlexSV ©   (2003-01-17 10:09) [9]

> xn0bys
подозреваю, что Ваша проблема заключена в этих точках
if @mode="modify"
begin
update tproc
set id_obj=@id_obj, ..., kl=@kl
where tproc.id=@id_tproc
Догадаться сложно, но если бы процедура была приведена полностью, то ответ получили бы сразу.
Наверное в этих точках апдейтится ключ, но Вам виднее :)


← →
Mike_Goblin ©   (2003-01-17 10:26) [10]

>2 Mike_Goblin,
>Под Delphi"ским, вроде все нормально.

а под MS SQL debuger, который позволяет отлаживать хранимые процедуры?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
3-4790
MsGuns
2003-01-16 19:01
2003.02.03
UPDATE INTO TABLE VALUES.. Добавить более одной строки


14-5260
iNew
2003-01-17 06:05
2003.02.03
Как в Fare посмотреть размер файла?


3-4745
andwcomm
2003-01-15 21:20
2003.02.03
Как програмно узнать физическое расположение файла базы данных


14-5222
Bad boy (c)
2003-01-15 22:03
2003.02.03
Такой вот странный текст я нашел...


14-5166
Adolf
2003-01-17 20:28
2003.02.03
Component




   Наверх