sql脚本需要if语句包装

时间:2012-03-12 20:10:14

标签: sql-server tsql

我试图在一个检查中包含一个简单的函数,为什么我的语法不正确?

更新

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”附近的语法不正确。 Msg 178,Level 15,State 1,Line 19 带有返回值的RETURN语句不能在此上下文中使用。

1 个答案:

答案 0 :(得分:5)

GO is a batch separator.

GO是sqlcmd和osql实用程序识别的命令,它将命令发送到SQL引擎,它不是有效的SQL。

取出最后的所有GO

一个更简单的例子也会失败:

IF 1=1
BEGIN
 SELECT 'FOO'
 GO
END

所有设置都应该在脚本的最开头,因为它们会持续一段时间。

相关问题