Sql server SQL Server存储过程中换行符的含义是什么

Sql server SQL Server存储过程中换行符的含义是什么,sql-server,stored-procedures,Sql Server,Stored Procedures,这样的存储过程是有效的 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[AllotTectOnBay] @date datetime, @AddTech [dbo].[AddTechnicianBayallotment] READONLY AS BEGIN SET NOCOUNT ON; begin try begin tra

这样的存储过程是有效的

 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO

 ALTER PROCEDURE [dbo].[AllotTectOnBay] 
      @date datetime,
      @AddTech [dbo].[AddTechnicianBayallotment] READONLY 
 AS
 BEGIN
     SET NOCOUNT ON;

     begin try
     begin transaction

     commit transaction
     end try
     BEGIN CATCH
         rollback transaction;
         declare @ErrorMessage nvarchar(max), @ErrorSeverity int, @ErrorState int;

         select 
             @ErrorMessage = ERROR_MESSAGE() + '' Line '' + cast (ERROR_LINE() as nvarchar(5)), 
             @ErrorSeverity = ERROR_SEVERITY(), 
             @ErrorState = ERROR_STATE(); 

         raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState); 
     END CATCH
 END
 GO

但是当我把所有的东西放在一条线上时,它就不起作用了。为什么?SQL Server是否有类似于line end的功能;在C#?

中,问题可能出在
GO
命令上。它必须放在一行中(可能包括注释)

Transact-SQL语句不能与GO命令占用同一行。但是,该行可以包含注释

参考链接:


从存储过程的
ALTER
END
,您可以将其放在一行中。

作为一个选项,您还可以在多行中定义sql语句

string sqlCommand = @"select * from foobar
                      where ....";

在将所有内容放在一行之前,请尝试使用GO分隔命令