сценарий sql нужен, если оператор обернут - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь обернуть простую функцию в проверку существования, почему я получаю неправильный синтаксис?

обновлено:

GO

IF EXISTS (SELECT TOP 1 * FROM Customers)
    BEGIN
        USE [rstestDB]

        SET ANSI_NULLS ON

        SET QUOTED_IDENTIFIER ON

        CREATE FUNCTION [dbo].[udf_GetName] 
        (
            @p1 nvarchar(25)
        )
        RETURNS varchar
        AS
        BEGIN
            DECLARE @Result varchar(25)
            SELECT @Result = 'John Doe'
            RETURN @Result
        END
    END
GO

Получение следующегоошибка: сообщение 156, уровень 15, состояние 1, строка 10 Неверный синтаксис рядом с ключевым словом «FUNCTION».Сообщение 178, уровень 15, состояние 1, строка 19 В этом контексте нельзя использовать инструкцию RETURN с возвращаемым значением.

1 Ответ

5 голосов
/ 13 марта 2012

GO - это разделитель пакетов.

GO - это команда, распознаваемая утилитами sqlcmd и osql, которые отправляют команды в механизм SQL, это недопустимый SQL.

Уберите все GO с, кроме самого конца.

Более простой пример, который также не удастся:

IF 1=1
BEGIN
 SELECT 'FOO'
 GO
END

Все ваши настройкидействительно должно быть в самом начале сценария, так как они будут сохраняться на протяжении всей сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...