首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法访问sql中查询的表值参数

无法访问sql中查询的表值参数
EN

Stack Overflow用户
提问于 2014-10-16 08:48:54
回答 1查看 251关注 0票数 0

我在单个存储过程中有两个查询。我有一个表值参数&用于这两个查询的TVP。我的查询中有一个很好(更新查询很好),但是如果我在insert查询中使用相同的TVP,那么它不会将值插入到它。我不知道发生了什么&而且错误也不会发生。

这里是我的查询:

代码语言:javascript
复制
CREATE TYPE Mapping_n_Info_Master_Type AS TABLE
(
    quantity INT,
    product_id INT,
    sell_order_no VARCHAR(20),
    selling_product_id VARCHAR(20),
    tax_id INT
);
GO

CREATE PROC spInsert_Rs_Sell_Order_Master
(
    @tvp_Mapping_n_Info_Master Mapping_n_Info_Master_Type READONLY
)
AS
BEGIN

    SET NOCOUNT ON
    BEGIN TRY
    BEGIN TRANSACTION

        --Start This Part is not Working
         INSERT INTO
            RS_Sells_Invoice_Info_Master 
         SELECT 
            sell_order_no,product_id,selling_product_id,tax_id,qty
         FROM
            @tvp_Mapping_n_Info_Master

        --End This Part is not Working


        --Insert Logic For Sell Order Mapping
        UPDATE 
            RS_Sell_Order_Mapping 
        SET
            quantity  = TVP.quantity    
        FROM 
            @tvp_Mapping_n_Info_Master tvp
            INNER JOIN RS_Sell_Order_Mapping AS SOM ON
            TVP.product_id = SOM.product_id AND TVP.sell_order_no = SOM.sell_order_no
        WHERE 
            SOM.product_id = TVP.product_id
                AND
            SOM.sell_order_no = TVP.sell_order_no

    COMMIT TRANSACTION

    END TRY

    BEGIN CATCH

         DECLARE @ERROR_MSG NVARCHAR(MAX), @SEVERITY INT, @STATE INT
         SELECT @SEVERITY = ERROR_SEVERITY(), @STATE = ERROR_STATE()
         ,@ERROR_MSG = ERROR_MESSAGE() + ' err src line: ' + CAST( ERROR_LINE() AS NVARCHAR(20)) + ' ' + ISNULL(ERROR_PROCEDURE(), '');           
         --@ERROR_MSG = ERROR_MESSAGE()
         ROLLBACK;
         -- RE-THROW EXCEPTION FOR DIAGNOSTIC VISIBILITY
         RAISERROR (@ERROR_MSG ,@SEVERITY, @STATE);         
         RETURN

    END CATCH
END

我的桌子看起来像这样

是否要更改已提供给insert查询的参数序列。请给出你的建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 09:32:56

写成:

代码语言:javascript
复制
INSERT INTO 
RS_Sells_Invoice_Info_Master (sell_order_no,
                              product_id,
                              selling_product_id,
                              tax_id,
                              qty) 
SELECT MIM.sell_order_no,
       MIM.product_id,
       MIM.selling_product_id,
       MIM.tax_id,
       MIM.quantity
FROM
@tvp_Mapping_n_Info_Master as MIM;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26400028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档