像这样的存储过程
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#?
答案 0 :(得分:1)
问题可能出在GO
命令上。它必须放在一行(可能包含注释)
Transact-SQL语句不能与GO命令占用同一行。但是,该行可以包含注释。
参考链接:MDSN GO COMMAND
从存储过程的ALTER
到END
,您可以将其放在一行中。
答案 1 :(得分:0)
作为一个选项,您还可以在多行中定义sql语句。
string sqlCommand = @"select * from foobar
where ....";