CREATE PROCEDURE [dbo].[ASS_INVENTORY_UNSTOCKED_Ins] @p_LIST_UNSTOCKED XML = NULL AS BEGIN BEGIN TRANSACTION Declare @hdoc INT DECLARE @ERRORSYS NVARCHAR(100) = '' Exec sp_xml_preparedocument @hdoc Output, @p_LIST_UNSTOCKED DECLARE UnstockedDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/UnstockedDetail',2) WITH ( UNSTOCKED_ID varchar(15), INVENT_ID varchar(15) , ASS_NAME nvarchar(1000) , SERIAL nvarchar(max) , BRANCH_ID nvarchar(200) , DEPT_ID nvarchar(200) , USE_DATE varchar(25) ) OPEN UnstockedDetail DECLARE @UNSTOCKED_ID varchar(15), @INVENT_ID varchar(15), @ASS_NAME nvarchar(1000), @SERIAL nvarchar(max), @BRANCH_ID nvarchar(200), @DEPT_ID nvarchar(200), @USE_DATE varchar(25) FETCH NEXT FROM UnstockedDetail INTO @UNSTOCKED_ID, @INVENT_ID, @ASS_NAME, @SERIAL, @BRANCH_ID, @DEPT_ID, @USE_DATE WHILE @@FETCH_STATUS = 0 BEGIN -- Kiểm tra [INVENT_ID] KHÔNG TỒn TẠi IF(NOT EXISTS( SELECT 1 FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @INVENT_ID)) BEGIN SET @ERRORSYS = N'Không tồn tại INVENT_ID: ' + @INVENT_ID GOTO ABORT END EXEC SYS_CodeMasters_Gen 'ASS_INVENTORY_UNSTOCKED', @UNSTOCKED_ID OUT IF @UNSTOCKED_ID='' OR @UNSTOCKED_ID IS NULL GOTO ABORT INSERT INTO [dbo].[ASS_INVENTORY_UNSTOCKED] ( [UNSTOCKED_ID] ,[INVENT_ID] ,[ASS_NAME] ,[SERIAL] ,[BRANCH_ID] ,[DEPT_ID] ,[USE_DATE]) VALUES ( @UNSTOCKED_ID, @INVENT_ID, @ASS_NAME, @SERIAL, @BRANCH_ID, @DEPT_ID, CONVERT(DATETIME, @USE_DATE, 103) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM UnstockedDetail INTO @UNSTOCKED_ID, @INVENT_ID, @ASS_NAME, @SERIAL, @BRANCH_ID, @DEPT_ID, @USE_DATE END CLOSE UnstockedDetail DEALLOCATE UnstockedDetail COMMIT TRANSACTION SELECT '0' as Result, '' id, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE UnstockedDetail DEALLOCATE UnstockedDetail ROLLBACK TRANSACTION SELECT '-1' as Result, '' id, @ERRORSYS ErrorDesc RETURN '-1' End END