Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
ВнизУважаемые, помогите... Найти похожие ветки
← →
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 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c