2015-12-29 33 views
-2

我已经有一个工作的存储过程,从TABLETYPE在这个例子中使用SQL Server表类型更新存储过程查询 - 如何?

CREATE PROCEDURE [dbo].[tblDefQ_Detail_INSERT] 
    @Quotient_D Quotient_D READONLY 
AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO Quotient_D ([q_id], [item_id], [item_name]) 
     SELECT 
      [q_id], [item_id], [item_name] 
     FROM 
      @Quotient_D 
END 

此存储过程作为编码

CREATE TYPE [dbo].[Quotient_D] AS TABLE(
[q_id] [int] NULL, 
[item_id] [int] NULL, 
[item_name] [nvarchar](50) NULL 
) 

这工作得很好,从表型取值需要的数据等。

我现在想的是使用上

q_id 
+0

那么什么是你的问题这个WHERE子句,其值为从该表型的UPDATE存储过程? –

回答

1
CREATE PROCEDURE [dbo].[tblDefQ_Detail_UPDATE] 
    @Quotient_D Quotient_D READONLY 
AS 
BEGIN 
    SET NOCOUNT ON; 

    UPDATE original 
    SET item_id = temp.item_id, 
     item_name = temp.item_name 
    FROM @Quotient_D temp 
    JOIN Quotient_D original ON temp.q_id = original.q_id 
END 
+0

许多感谢名单我尝试IIF有三排它复制每一行 –

+0

该商标后实施记录;如果你的q_id在数据库中不是唯一的/主键,使用相关的字段加入那里 –

+0

它不插入额外的记录如更新现有2,但第三次添加不工作 –

相关问题