'CREATE FUNCTION'必须是查询批处理

时间:2018-03-27 11:25:14

标签: sql sql-server sql-function

每当我和其他sql语句一起运行时,都会出错:

  

CREATE FUNCTION'必须是查询批处理中的第一个语句

但是,每当我单独执行它时(在我的情况下没有SELECT * FROM CUSTOMER它可以工作)

   SELECT * FROM CUSTOMER;

   create function udfLogin
    (@username nvarchar(100), @password nvarchar(100)) 
    returns int as
    begin
      if exists(select 1 from CUSTOMER where Username = @username and [Password] = @password)
        return 1
      return 0;
    end

3 个答案:

答案 0 :(得分:2)

您需要包含批处理分隔符,例如Go

SELECT * FROM CUSTOMER
GO
   create function udfLogin
    (@username nvarchar(100), @password nvarchar(100)) 
    returns int as
    begin
      if exists(select 1 from CUSTOMER where Username = @username and [Password] = @password)
        return 1
      return 0;
    end
Go

答案 1 :(得分:1)

您需要将每批代码与GO关键字分开。

SELECT * FROM CUSTOMER
 GO
   create function udfLogin
    (@username nvarchar(100), @password nvarchar(100)) 
     returns int as
     begin
      if exists(select 1 from CUSTOMER where Username = @username and 
      [Password] = @password)
       return 1
     return 0;
   end
Go

答案 2 :(得分:0)

如错误消息所示,CREATE FUNCTION语句必须是查询批处理中的第一个语句。在CREATION FUNCTION语句之前不应该有其他语句使它不是查询批处理中的第一个语句。如消息所示,为避免此错误,CREATE FUNCTION语句必须是查询批处理中的第一个语句。

SQL将该语句作为查询批处理执行。

批量使用规则

以下规则适用于使用批次:

  

创建默认,创建功能,创建程序,创建规则,创建   无法组合SCHEMA,CREATE TRIGGER和CREATE VIEW语句   与批处理中的其他语句。   CREATE语句必须启动批处理。该批次中的所有其他语句将被解释为第一个CREATE语句定义的一部分。