Учитывая следующую простую структуру:Хранимая процедура вставки значений в таблицу, используя табличные значения параметров
TABLE: Product (ProductId, ProductName)
TABLE: Category (CategoryId, CategoryName)
LINK TABLE: ProductId,CategoryId
У меня есть тип таблицы, которую я хочу передать в хранимую процедуру для вставки значения в другую таблицу, если они не существуют.
CREATE TYPE StringList_TBLType AS TABLE (s NVARCHAR(255) NOT NULL PRIMARY KEY)
Я хочу сделать следующее в хранимой процедуре, где я прохожу в ProductName и StringList_TBLType из категории имен
- выбрать все строки из моего StringList_TBLType
- Вставьте строку в ТАБЛИЦА ТАБЛИЦЫ, если она не существует
- Получить идентификатор вставленной или уже существующей категории
- Вставьте ProductId и CategoryId в LINK T СОСТОЯНИЕ.
Я мог бы, вероятно, бороться и что-то работать, но у меня мало опыта работы с MS SQL и хранимых процедур в целом, и я боюсь, что в конечном итоге я напишу очень неэффективный способ сделать это.
Интересно ... Никогда не слышал о слиянии и раньше, но после некоторого чтения, это выглядит как стол @changes будет иметь только идентификаторы новых категорий ? Мне также нужны идентификаторы существующих категорий, так как оба нужно зайти в таблицу ссылок. – Trevor
Я сделал тест для себя (SQL Server 2008 R2) и, добавив назначенный слишком «@ JustSomeRandomVariable» для обновлений, он фиксирует обновления в @changes также. – JodyT
Ах, звучит так, будто я должен дать ему повод и посмотреть, что произойдет! – Trevor