0
쿼리 언어로 SQL Server 2012 및 T-SQL을 사용합니다.TVP에서 여러 값을 가진 T-SQL UPSERT 테이블
매개 변수 (@userGroupID) 및 많은 함수 ID로 전달 된 하나의 ID 값을 사용하여 [cross_function_user]에서 여러 열을 업데이트/삽입하는 데 도움이 필요합니다. 그것들은 C#의 List이며, Item이라는 이름의 int 열만있는 Table Valued Parameter로 sproc에 전달됩니다.
ALTER PROCEDURE [whatever]
@userGroupID INT,
@listID AS IntList READONLY
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO [dbo].[cross_function_user] USING @listID
ON [dbo].[cross_function_user].id_group_user = @userGroupID
WHEN MATCHED THEN
UPDATE SET [cross_function_user].id_group_user = @userGroupID,
[cross_function_user].id_function = (SELECT Item FROM @listID)
WHEN NOT MATCHED THEN
INSERT (id_group_user, id_function)
VALUES (@userGroupID, (SELECT Item FROM @listID));
END
첫째, 오류 물론 '서브 쿼리는 하나 개 이상의 결과를 반환',하지만 난이 재 작성하는 기술이 부족하고, 내 upsert이 올바른 방법으로 작성된 경우 정말 모르겠어요. 어떤 도움을 주시면 감사하겠습니다.
IntList에는 단 하나의 열만 있습니까? 뭐라고 해요? MERGE 문에서 열을 참조해야합니다. 이 예제에서는 TVP의 별칭을 지정하고 해당 열을 참조 할 수 있습니다. http://sqlblogcasts.com/blogs/simons/archive/2008/06/17/SQL-Server-2008---Killer-features --- MERGE-and-Valued-Parameters.aspx –
감사합니다. ElectriLlama, 링크의 기사가 완벽하게 해결되었습니다! –