我试图在一个检查中包含一个简单的函数,为什么我的语法不正确?
更新
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语句不能在此上下文中使用。
答案 0 :(得分:5)
GO是sqlcmd和osql实用程序识别的命令,它将命令发送到SQL引擎,它不是有效的SQL。
取出最后的所有GO
。
一个更简单的例子也会失败:
IF 1=1
BEGIN
SELECT 'FOO'
GO
END
所有设置都应该在脚本的最开头,因为它们会持续一段时间。