给定以下简单的结构:
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 和 Category Names 的 StringList_TBLType
- 从我的 StringList_TBLType 中选择所有字符串
- 如果字符串不存在,则将其插入到 Category TABLE 中
- 获取已插入或已存在 Category 的 ID
- 将 ProductId 和 CategoryId 插入到 LINK TABLE 中。
我可能会努力工作并获得一些工作,但我对 MS SQL 和一般的存储过程几乎没有经验,并且害怕我最终会编写一种非常低效的方法来做到这一点。