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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка Синтаксиса 
V
    Опции темы
kBepTu
Дата 27.12.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

CREATE  FUNCTION C0untNmbrs (@KODRYBR CHAR(8), @SIGN smallint) RETURNS TABLE 
AS
    BEGIN
    IF (@SIGN>0)
        RETURN SELECT COUNT(*) FROM KATALOG WHERE KATALOG.Rybrika=@KODRYBR AND KATALOG.YER>1980
    RETURN SELECT COUNT(*) FROM KATALOG WHERE KATALOG.Rybrika=@KODRYBR AND KATALOG.YER<1980
    END

CREATE VIEW NMRybr
AS
SELECT    RYBRICAT.RNAME,
    C0untNmbrs(RYBRICAT.RSHIFR, 1) AS MORE1980
    C0untNmbrs(RYBRICAT.RSHIFR, -1) AS LESS1980
    FROM Rybr, RYBRICAT WHERE RYBRICAT.RSHIFR=Rybr.Rybrika 
SELECT * FROM NMRybr

на функцию выдает ошибку
Код

Incorrect syntax near 'BEGIN'.

На представление
Код

'C0untNmbrs' is not a recognized built-in function name

Подскажите пожалуйста

Это сообщение отредактировал(а) kBepTu - 27.12.2007, 01:58
PM   Вверх
Servena
Дата 27.12.2007, 11:39 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

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



Смотри, у тебя синтаксис неправильный.

Если ты хочешь использовать inline table-valued - у нее нет тела и только одна выборка.
Код

CREATE  FUNCTION C0untNmbrs (@KODRYBR CHAR(8), @SIGN smallint) RETURNS TABLE 
AS
RETURN
(
    SELECT COUNT(*) FROM KATALOG WHERE KATALOG.Rybrika=@KODRYBR AND KATALOG.YER>1980
);

Обрати внимания на круглые скобки.


Но тебе скорее всего нужна multistatement table-valued функция
Код

CREATE  FUNCTION C0untNmbrs (@KODRYBR CHAR(8), @SIGN smallint) 
    RETURNS @xxxxx TABLE
    (
    r INT ,
    e VARCHAR(37)
    ) 
AS
    BEGIN
    IF (@SIGN>0)
        RETURN SELECT COUNT(*) FROM KATALOG WHERE KATALOG.Rybrika=@KODRYBR AND KATALOG.YER>1980
    RETURN SELECT COUNT(*) FROM KATALOG WHERE KATALOG.Rybrika=@KODRYBR AND KATALOG.YER<1980
    END

Обрати внимание на это:
Код

RETURNS @xxxxx TABLE
    (
    r INT ,
    e VARCHAR(37)
    ) 

Здесь ты объявляешь таблицу и ее структуру(у меня она от фонаря - а ты сделай ту, которая подойдет для твоего SELECT)
PM MAIL   Вверх
kBepTu
Дата 27.12.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

Но тебе скорее всего нужна multistatement table-valued функция

Угу 

Ответ исчерыпающий  smile  Спасибо!  smile 

Это сообщение отредактировал(а) kBepTu - 27.12.2007, 16:53
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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