Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 подскажите почему ошибка?  [new]
Валентина1992
Member

Откуда:
Сообщений: 19
CREATE FUNCTION cena_1k
(@kod_filma smallint)
RETURNS smallint AS
BEGIN
DECLARE @cena smallint
SELECT @cena=cena_1k
FROM pokaz INNER JOIN kategoria
ON kategoria.[kod_kat]=pokaz.[kod_kat]
INNER JOIN film
ON film.[kod_film]=pokaz.[kod_film]

WHERE pokaz.[kod_film]=@kod_filma
RETURN @cena
END

Declare @1k smallint
set @1k=dbo.cena_1k(100)
select @1k as Сумма.

Ошибка: Сообщение 156, уровень 15, состояние 1, процедура cena_1k, строка 16
Неправильный синтаксис около ключевого слова "Declare".
22 янв 15, 19:58    [17156551]     Ответить | Цитировать Сообщить модератору
 Re: подскажите почему ошибка?  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
Валентина1992,

этот скрипт запускается как единое целое?
И где же, по-Вашему, конец текста функции?

Если не ошибаюсь, имя переменной не может начинаться с цифры.
22 янв 15, 21:08    [17156732]     Ответить | Цитировать Сообщить модератору
 Re: подскажите почему ошибка?  [new]
o-o
Guest
CREATE FUNCTION must be the only statement in the batch

разнесите на 2 batch-а (go поставьте между ними)
CREATE FUNCTION cena_1k 
(@kod_filma smallint)
RETURNS smallint AS
BEGIN
DECLARE @cena smallint
SELECT @cena=cena_1k
FROM pokaz INNER JOIN kategoria
ON kategoria.[kod_kat]=pokaz.[kod_kat]
INNER JOIN film 
ON film.[kod_film]=pokaz.[kod_film]

WHERE	pokaz.[kod_film]=@kod_filma
RETURN @cena
END
go

Declare @1k smallint
set @1k=dbo.cena_1k(100)
select @1k as Сумма
22 янв 15, 21:47    [17156828]     Ответить | Цитировать Сообщить модератору
 Re: подскажите почему ошибка?  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
iap
Если не ошибаюсь, имя переменной не может начинаться с цифры
Приврал
23 янв 15, 12:46    [17159004]     Ответить | Цитировать Сообщить модератору
 Re: подскажите почему ошибка?  [new]
o-o
Guest
iap,

как раз нет, сказано же "если не ошибаюсь"
а кто это, интересно, ни разу не ошибается?
наверное только тот, кто ничего не делает
23 янв 15, 13:06    [17159182]     Ответить | Цитировать Сообщить модератору
 Re: подскажите почему ошибка?  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
o-o
iap,

как раз нет, сказано же "если не ошибаюсь"
а кто это, интересно, ни разу не ошибается?
наверное только тот, кто ничего не делает
Вот я и говорю "приврал", а не "наврал"!
23 янв 15, 14:14    [17159793]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить