SQL Server 2008 中的 MERGE 语句
Posted
技术标签:
【中文标题】SQL Server 2008 中的 MERGE 语句【英文标题】:MERGE statement in SQL Server 2008 【发布时间】:2011-12-18 15:20:37 【问题描述】:我有一张桌子student(int ID, nvarchar(10) studentName)
和一个表用户类型myStudentType (int ID, nvarchar(10) studentName)
我需要创建一个接受myStudentType
参数(@students
)和参数@newname
的存储过程
mySp(@students myStudentType, @newname nvarchar(10))
并将myStudentType
与student 合并,以便两个表上存在的所有具有id 的行现在都将在student 表中具有studentName
- @newname
(参数)
并且 sp 将返回 @students 中未更新的所有记录的列表
学生表
最好的方法是什么(最好是合并)
谢谢
【问题讨论】:
我只有部分使用合并来更新学生表中的所有行...我不知道如何将参数中未更新的所有记录获取到 sp 【参考方案1】:我认为最有问题的规范部分是:
sp 将返回 @students 中未在学生表中更新的所有记录的列表
我假设“列表”规范意味着“表”(T-SQL 没有“列表”类型的概念)。输出参数不能是TABLE
类型(包括用户定义的表类型)。虽然函数可以返回一个表,但您不能通过函数更新基表。有关更多详细信息和可能的解决方案,请参阅 Erland Sommarskog 的 How to Share Data Between Stored Procedures。
【讨论】:
以上是关于SQL Server 2008 中的 MERGE 语句的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有
Sql Server 2008 MERGE - 获取计数的最佳方式
sql server 2008 merge matched判定条件