Да, вы можете просто разделить их точкой с запятой.Например, у меня есть код, который выполняет следующее в одном вызове
SET NOCOUNT ON;
DECLARE @decimalDate DECIMAL(12,0);
DECLARE @charDate CHAR(12);
DECLARE @utcDate DATETIMEOFFSET;
DECLARE date_cursor CURSOR FOR SELECT {1} FROM {0} WHERE ISNULL({1},0)!=0;
OPEN date_cursor;
FETCH NEXT FROM date_cursor INTO @decimalDate;
WHILE @@FETCH_STATUS=0
BEGIN
BEGIN TRY SET @charDate=CONVERT(CHAR(12),@decimalDate);
SET @utcDate=SwitchOffset(
CONVERT(DATETIME,'20'
+SUBSTRING(@charDate,1,2)+'-'+SUBSTRING(@charDate,3,2)+'-'
+SUBSTRING(@charDate,5,2)+' '+SUBSTRING(@charDate,7,2)+':'
+SUBSTRING(@charDate,9,2)+':'+SUBSTRING(@charDate,11,2)
,121) AT TIME ZONE '{3}',0);
END
TRY BEGIN CATCH
SET @utcDate=SysUtcDateTime();
END CATCH;
BEGIN
TRY UPDATE {0} SET {2}=@utcDate WHERE CURRENT OF date_cursor;
END TRY
BEGIN CATCH END CATCH;
FETCH NEXT FROM date_cursor INTO @decimalDate;
END;
CLOSE date_cursor;
DEALLOCATE date_cursor;
Есть исключения.Например, оператор «создать процедуру» должен быть первым оператором блока.Но большинство DML могут быть упакованы следующим образом.