В SQL Server есть два типа переменных - это скалярные переменные (все встроенные типы данных являются скалярными переменными) и есть табличные переменные.Вы можете объявить табличную переменную либо используя тип таблицы, определенный пользователем, либо указав ее как таблицу со всеми ее столбцами.
Предположим, у вас есть UDT, подобный этому:
create type dbo.intList as table
(
val int
)
вы можете объявить переменную этого типа, и это будет табличная переменная, содержащая единственный столбец int с именем val:
declare @MyIntsTable As dbo.intList
Или вы можете объявить табличную переменную следующим образом:
declare @MyIntsTable as table
(
val int
)
Однако я не думаю, что вам нужно использовать табличную переменную в этой ситуации.Мне кажется, что вам нужно что-то вроде этого:
BEGIN TRANSACTION
BEGIN TRY
DELETE
FROM dbo.MainJobs
WHERE @MainJobId =IDKey
DELETE dbo.Relationship1
WHERE SubJobs IN
(
SELECT SubJobFamily
FROM dbo.Jobz
WHERE JobFamily = @MainJobId
)
DELETE
FROM dbo.Jobz
WHERE JobFamily = @MainJobId
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
END CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
Я завернул операторы удаления в транзакции, потому что я предполагаю, что вам нужны все из них для успеха, но если один из них не удается, вы хотите, чтобы всепотерпеть неудачу.