SQL Server 2012 と T-SQL をクエリ言語として使用しています。
パラメータ (@userGroupID) として渡された 1 つの ID 値と多数の関数 ID を使用して、[cross_function_user] の複数の列を更新/挿入するのに助けが必要です。これらは C# のリストであり、テーブル値パラメーターとして sproc に渡されます - Item という名前の int の列が 1 つだけあります。
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
まず、もちろん「サブクエリが複数の結果を返しました」というエラーが発生しますが、これを書き直すスキルがなく、アップサートが正しい方法で記述されているかどうかはよくわかりません。どんな助けでも大歓迎です。