Sql “CREATE FUNCTION”必须是查询批处理中的第一条语句

Sql “CREATE FUNCTION”必须是查询批处理中的第一条语句,sql,sql-server,sql-function,Sql,Sql Server,Sql Function,每当我将其与其他sql语句一起运行时,它都会给出一个错误: CREATE FUNCTION“必须是查询批处理中的第一条语句 然而,在我的情况下,每当我单独执行它而没有从客户处选择*时,它就会工作 SELECT * FROM CUSTOMER; create function udfLogin (@username nvarchar(100), @password nvarchar(100)) returns int as begin if ex

每当我将其与其他sql语句一起运行时,它都会给出一个错误:

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

然而,在我的情况下,每当我单独执行它而没有从客户处选择*时,它就会工作

   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

您需要包括一个批处理分隔符,例如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

您需要使用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

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

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

使用批处理的规则

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

创建默认值、创建函数、创建过程、创建规则、创建 架构、创建触发器和创建视图语句不能组合 与其他语句一起批处理。 CREATE语句必须启动批处理。该批处理中后面的所有其他语句将被解释为第一个CREATE语句定义的一部分


分号丢失。@Alexander添加分号并不会开始新的批处理,它只是一个语句终止符,而不是一些使用分号的人所说的开始符;WITH语句似乎相信:P.批处理可以包含许多语句。在创建之前添加一个GOfunction@Larnu,我很惭愧!SQL不是我的强项:有点离题,但你不应该用纯文本存储密码。它们应该用盐腌过,再剁碎。