我在sql server 2008中创建了一个类型,用于将数据表传递给存储过程。
我的SP工作正常,但如果表中存在数据,如何查看数据?
(例如:检查detailid或id
如果存在:更新它们
如果不存在:插入新的)
这是我的SP:
ALTER PROCEDURE [dbo].[Insert_Data]
(
@empinfo myType READONLY
)
AS
BEGIN
SET NOCOUNT ON;
Insert into TableEmp(ID, DetailID, Text)
select id, detailid, text from @empinfo
END
Thnx all
答案 0 :(得分:2)
ALTER PROCEDURE [dbo].[Insert_Data]
(
@empinfo myType READONLY
)
AS
BEGIN
SET NOCOUNT ON;
MERGE TableEmp AS t
USING (select id, detailid, [text] from @empinfo) AS s
ON s.ID = t.ID
WHEN MATCHED THEN
UPDATE SET t.detailid = s.detailid,
t.[text] = s.[text]
WHEN NOT MATCHED THEN
INSERT(id, detailid, [text])
VALUES(s.id, s.detailid, s.[text]);
END
答案 1 :(得分:1)
您可以声明变量并计算表中的记录。
DECLARE @count INT
SET @count = (SELECT COUNT(ID)
FROM TableEmp)
-- Do Something with the results
然后使用条件逻辑,您可以使用计数来完成不同的结果。
IF @count = 0
BEGIN
-- Do Something cool like insert data
END
ELSE
BEGIN
-- Do Something else like update data
END
这是一个简单的示例,您可以搜索特定记录并进行更新。如果需要更新许多记录,则可以使用游标并遍历所需的记录并更新所需的记录。
有关游标的更多信息,请访问: