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

时间:2017-04-07 04:08:04

标签: 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 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是否有类似于行尾的内容;在C#?

2 个答案:

答案 0 :(得分:1)

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

  

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

参考链接:MDSN GO COMMAND

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

答案 1 :(得分:0)

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

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