Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удаль значения из функции 
:(
    Опции темы
kma
Дата 26.4.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 1.12.2005

Репутация: нет
Всего: нет



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

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

PM MAIL   Вверх
boevik
Дата 26.4.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



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


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
SergKO
Дата 28.4.2007, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 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, если Вы его не изменяете.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0395 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.