2014-02-02 4 views
5

У меня есть таблица вроде этого:
Вставьте массив в таблицу SQL с хранимой процедурой

keyword (table name)   
----------------  
kid key 
----------------  
1  asp.net 
2  php 
3  C#‎ 
4  vb 

На странице WebForm, у меня есть текстовое поле, что пользователь может вставить строку, как показано ниже:

asp.net,php,C#‎,vb,css 

я должен вставить эту строку в другую таблицу, как показано ниже:

p-tag (table name) 
---------------- 
pid kid 
---------------- 
1 1 
1 2 
1 3 
1 4 


Я должен сначала проверить, что это слово в строке существует в ключевом слове, или нет. если да, вставьте их в таблицу p-tag. Я могу выполнить это с кодом C#, но я хочу сделать с хранимой процедурой.
Возможно ли это?
примечание: мой английский слабый, извините.

ответ

5

Я предлагаю передать ключевые слова в качестве параметра table-value. Обратитесь к этой статье, чтобы узнать больше об этом - Table-Valued Parameters. Также есть хороший пример C# о том, как его использовать. Тогда достаточно легко выполнить то, что вам нужно, с помощью одного запроса. Сначала создайте тип для параметра таблицы значений:

CREATE TYPE dbo.TableTypeName AS TABLE 
     (keyName nvarchar(50)) 

затем использовать его в процедуре так:

CREATE PROCEDURE sp_UpdateTags 
    (@tableParameter dbo.TableTypeName READONLY, @tagId INT) 
AS 
INSERT [p-tag](pid, kid) 
SELECT @tagId, K.kid from @tableParameter tP 
inner join [keyword] K on key = tP.keyName 

Это будет вставлять только значения, которые существуют в таблице ключевых слов.

Надеюсь, это поможет!

Смежные вопросы