단일 저장 프로 시저에 두 개의 쿼리가 있습니다. TVP를 두 쿼리에 모두 사용하는 하나의 테이블 테이블 값 매개 변수 &이 있습니다. 내 쿼리 중 하나가 정상적으로 작동합니다 (업데이트 쿼리가 정상적으로 작동합니다). 삽입 쿼리에 동일한 TVP를 사용하고 있으면 값을 삽입하지 않습니다. 나는 어떤 일이 일어나고 있는지 모른다. & 또한 오류가 오지 않는다.SQL에서 쿼리의 테이블 반환 값 매개 변수에 액세스 할 수 없습니다
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(), '');
[email protected]_MSG = ERROR_MESSAGE()
ROLLBACK;
-- RE-THROW EXCEPTION FOR DIAGNOSTIC VISIBILITY
RAISERROR (@ERROR_MSG ,@SEVERITY, @STATE);
RETURN
END CATCH
END
내 테이블이
처럼 보이는 내가 삽입 쿼리에 제공 한 매개 변수의 순서를 변경 하시겠습니까 :
여기 내 쿼리입니다. 등이
. 나는 그것이 문제일지도 모른다라고 생각한다. TVP에서 수량을 정의하고 삽입 쿼리에서 수량을 사용하고 있습니다. –
감사합니다. Krishnaraj 당신의 도움을 위해 ..... !!!! –
이 TAble 유형을 사용해야하는 이유와 테이블 유형이 무엇인지 말해 주실 수 있습니까 –