Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SELECT и хранимая процедура с INSERT'ом  [new]
Koenig
Member

Откуда: Калининград
Сообщений: 13
Подскажите (или ткните носом, но не смог найти)
Нужно проставить значения первичного ключа справочника в полученную с другого сервера временную табличку, если в справочнике значение отсутствует - добавить его.

Подробнее:
Есть результат запроса, полученный с другого сервера:
##Citizens (id int, sokrname varchar (150))
id sokrname
0 ИВАНОВ И.И.
0 ПЕТРОВ П.П.
0 СИДОРОВ С.С.

Есть на сервере справочник Persons
pers_id sokrname
25 ИВАНОВ И.И.
42 СИДОРОВ С.С.

Нужно добавить в Persons отсутствующего Петрова и записать значения id из Persons в ##Citizens

Сделал хранимую процедуру для проверки и добавления
ALTER PROCEDURE [dbo].[Person_Check] 
(
	@Person_id int = 0 OUTPUT,
	@Sokrname varchar(150)
)
AS
BEGIN
	--SET NOCOUNT ON
	DECLARE @Temp_id int
	SET @Temp_id = 0
	
	SELECT TOP 1 @Temp_id=person_id FROM Persons WHERE Upper(rtrim(Ltrim(Persons.sokrname)))=Upper(rtrim(Ltrim(@Sokrname)))
	IF @@ROWCOUNT = 0
		EXEC Insert_Person @Temp_id OUTPUT,@Sokrname /*Еще одна хранимая процедура для добавления человека*/
		
	SET @Person_id = @Temp_id 
	RETURN @Temp_id 
END

Как задействовать ее в SELECT или в UPDATE? С помощью курсора задачка наверняка решается, но не хотелось бы их задействовать.

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)

Заранее благодарен за помощь
29 ноя 11, 12:50    [11676960]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и хранимая процедура с INSERT'ом  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
Koenig,

напишите просто insert и update
insert persons (sokrname)	
select distinct c.sokrname
from ##Citizens c
where not exists (select top 1 1 from persons p where c.sokrname = p.sokrname)

update c
set c.id = p.pers_id
from ##Citizens c join persons p on c.sokrname = p.sokrname
29 ноя 11, 13:07    [11677141]     Ответить | Цитировать Сообщить модератору
 Re: SELECT и хранимая процедура с INSERT'ом  [new]
Koenig
Member

Откуда: Калининград
Сообщений: 13
Baddy,

спасибо :)
29 ноя 11, 16:57    [11679114]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить