【发布时间】:2014-09-23 18:21:36
【问题描述】:
我使用 SQL Server 2008 并有一个存储过程,其中一个输入参数格式为 XML。此 XML 是一个名称列表,每个名称一个单词,没有空格。
对于这些名称中的每一个,我想检查它们是否已经存在于表中,如果没有,则应将它们添加到表中,如果是,则应在表中更新它们。
到目前为止,如果它们尚不存在,我可以添加它们,这可以按预期工作,但我不知道如何实现更新部分。
只是为了演示,这将是作为独立的更新部分(如果我有一个输入而不是 XML):
UPDATE RC_PermissionsUsers
SET ntid = @ntid,
departmentID = @departmentID,
role = @role
WHERE ntid = @ntid
插入部分的其余程序(工作):
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
BEGIN
INSERT INTO RC_PermissionsUsers
(
ntid,
departmentID,
[role]
)
SELECT ParamValues.ntid.value('.', 'varchar(255)'),
@departmentID,
@role
FROM @xmlUsers.nodes('/users/ntid') AS ParamValues(ntid)
WHERE NOT EXISTS
(
SELECT ntid
FROM RC_PermissionsUsers
WHERE ntid = ParamValues.ntid.value('.', 'varchar(255)')
)
END
COMMIT TRANSACTION;
END
【问题讨论】:
标签: sql sql-server xml stored-procedures sql-update