Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Как удаль значения из функции


Автор: kma 26.4.2007, 15:23
Посмотрите пожалуйста маю функцию и скажите что я там не правильно написал, зарание спасибо 
Код

CREATE FUNCTION AddSaitCategor(@IDCategor int, @idSait int, @Chek bit)
RETURNS bit
AS BEGIN
DECLARE @ChekTmp bit, @idSaitCategor int
SELECT @idSaitCategor=dbo.SaitCategor.id
FROM  dbo.SaitCategor 
WHERE  dbo.SaitCategor.idSait = @idSait and dbo.SaitCategor.idCategor = @IDCategor

if(@idSaitCategor>0)
SET @ChekTmp = 1
else
SET @ChekTmp = 0
if(@ChekTmp >@Chek)
DELETE FROM SaitCategor where dbo.SaitCategor.id = @idSaitCategor
if(@ChekTmp <@Chek)
INSERT INTO SaitCategor (idSait, idCategor) VALUES (@idSait, @IDCategor)
RETURN @Chek
END

Автор: boevik 26.4.2007, 17:12
А поподробнее, что функция должна делать (и при каких условиях) и в чем именно проблема?

Автор: SergKO 28.4.2007, 06:20
DELETE и INSERT нельзя использовать в функциях. Переписывайте в процедуру.
Примерно так

Код

create procedure AddSaitCategor
    @IDCategor    int,
    @idSait    int,
    @Chek        bit output

as
begin

declare @ChekTmp bit,
        @idSaitCategor int;

    select @idSaitCategor=dbo.SaitCategor.id
    from dbo.SaitCategor 
    where dbo.SaitCategor.idSait = @idSait and dbo.SaitCategor.idCategor = @IDCategor

    if @idSaitCategor > 0
        set @ChekTmp = 1
    else
        set @ChekTmp = 0

    if @ChekTmp > @Chek
        delete from SaitCategor where dbo.SaitCategor.id = @idSaitCategor
    else if @ChekTmp < @Chek
        insert into SaitCategor (idSait, idCategor) values (@idSait, @IDCategor)
    
    return (@@ERROR);

end 



Использование

Код

declare @RetVal    int;

    execute @RetVal = AddSaitCategor    @IDCategor    = @IDCategor,
                                        @idSait        = @idSait,
                                        @Chek        = @Chek output;



Только не понятно, зачем Вы возвращаете знасение @Chek, если Вы его не изменяете.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)