27,579
社区成员
发帖
与我相关
我的任务
分享
ALTER PROC Export_Merge_MaterialW
(
@ware_subjectid NVARCHAR(max), --企业商品的id集合,逗号隔开
@err NVARCHAR(100) OUTPUT --出错返回的数据
)
AS
DECLARE @attr INT
SELECT @attr=0
/*本段代码做程序处理 循环@ware_subjectid的每条记录,如果v_no=0或null则进行更新序号操作*/
--复制字符串1份 一份保存@ware_subjectidTemp,另一份原来的@ware_subjectid--
DECLARE @ware_subjectidTemp NVARCHAR(max)
--分隔符--
DECLARE @splitchar CHAR(1)
--分隔符位置变量--
DECLARE @Index INT --分隔符
--分隔开的每个字符--
DECLARE @Temp VARCHAR(10)
--企业商品表的v_no最大值
DECLARE @MaxID BIGINT
--循环的索引值,递增--
DECLARE @Row_Index INT
--企业商品的id集合--
SELECT @ware_subjectidTemp = @ware_subjectid
--企业商品的g_no,用于判断是否已经做过企业物料备案--
DECLARE @g_no BIGINT
--企业商品表的voucherid(报关商品ID),没有值先做归并关系
DECLARE @voucherid BIGINT
DECLARE @v_no BIGINT
SELECT @Row_Index = 0
SELECT @splitchar=','
SELECT @Index = CHARINDEX(@splitchar, @ware_subjectid,1)
SELECT @MaxID = MAX(v_no)+1 FROM dbo.ware_subject WHERE attr=@attr
IF @MaxID IS NULL
SET @MaxID = 1
Begin TRANSACTION
while(@Index>0)
begin
select @Temp= substring(@ware_subjectid, 1, @Index -1) --存储逗号隔开的每个值
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@Temp AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK TRANSACTION
BREAK
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK TRANSACTION
BREAK
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@Temp AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
--删除已处理字符串,重新转换位置
set @ware_subjectid = substring(@ware_subjectid, @Index+1, len(@ware_subjectid)-@Index)
set @Index = charindex(@splitchar, @ware_subjectid,1)
end
if(len(@ware_subjectid)>0) --逗号的最后一个值
BEGIN
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@voucherid AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK;
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK;
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@voucherid AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
END
COMMIT
ALTER PROC Export_Merge_MaterialW
(
@ware_subjectid NVARCHAR(max), --企业商品的id集合
@err NVARCHAR(100) OUTPUT --出错返回的数据
)
AS
DECLARE @attr INT
SELECT @attr=0
/*本段代码做程序处理 循环@ware_subjectid的每条记录,如果v_no=0或null则进行更新序号操作*/
--复制字符串1份 一份保存@ware_subjectidTemp,另一份原来的@ware_subjectid--
DECLARE @ware_subjectidTemp NVARCHAR(max)
--分隔符--
DECLARE @splitchar CHAR(1)
--分隔符位置变量--
DECLARE @Index INT --分隔符
--分隔开的每个字符--
DECLARE @Temp VARCHAR(10)
--企业商品表的v_no最大值
DECLARE @MaxID BIGINT
--循环的索引值,递增--
DECLARE @Row_Index INT
--企业商品的id集合--
SELECT @ware_subjectidTemp = @ware_subjectid
--企业商品的g_no,用于判断是否已经做过企业物料备案--
DECLARE @g_no BIGINT
--企业商品表的voucherid(报关商品ID),没有值先做归并关系
DECLARE @voucherid BIGINT
DECLARE @v_no BIGINT
SELECT @Row_Index = 0
SELECT @splitchar=','
SELECT @Index = CHARINDEX(@splitchar, @ware_subjectid,1)
SELECT @MaxID = MAX(v_no)+1 FROM dbo.ware_subject WHERE attr=@attr
IF @MaxID IS NULL
SET @MaxID = 1
Begin TRANSACTION
while(@Index>0)
begin
select @Temp= substring(@ware_subjectid, 1, @Index -1) --存储逗号隔开的每个值
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@Temp AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SET @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK TRANSACTION
return
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SET @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK TRANSACTION
return
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@Temp AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
--删除已处理字符串,重新转换位置
set @ware_subjectid = substring(@ware_subjectid, @Index+1, len(@ware_subjectid)-@Index)
set @Index = charindex(@splitchar, @ware_subjectid,1)
end
if(len(@ware_subjectid)>0) --逗号的最后一个值
BEGIN
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@voucherid AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK TRANSACTION
return
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK TRANSACTION
return
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@voucherid AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
END
COMMIT
ALTER PROC Export_Merge_MaterialW
(
@ware_subjectid NVARCHAR(max), --企业商品的id集合,逗号隔开
@err NVARCHAR(100) OUTPUT --出错返回的数据
)
AS
DECLARE @attr INT
SELECT @attr=0
/*本段代码做程序处理 循环@ware_subjectid的每条记录,如果v_no=0或null则进行更新序号操作*/
--复制字符串1份 一份保存@ware_subjectidTemp,另一份原来的@ware_subjectid--
DECLARE @ware_subjectidTemp NVARCHAR(max)
--分隔符--
DECLARE @splitchar CHAR(1)
--分隔符位置变量--
DECLARE @Index INT --分隔符
--分隔开的每个字符--
DECLARE @Temp VARCHAR(10)
--企业商品表的v_no最大值
DECLARE @MaxID BIGINT
--循环的索引值,递增--
DECLARE @Row_Index INT
--企业商品的id集合--
SELECT @ware_subjectidTemp = @ware_subjectid
--企业商品的g_no,用于判断是否已经做过企业物料备案--
DECLARE @g_no BIGINT
--企业商品表的voucherid(报关商品ID),没有值先做归并关系
DECLARE @voucherid BIGINT
DECLARE @v_no BIGINT
SELECT @Row_Index = 0
SELECT @splitchar=','
SELECT @Index = CHARINDEX(@splitchar, @ware_subjectid,1)
SELECT @MaxID = MAX(v_no)+1 FROM dbo.ware_subject WHERE attr=@attr
IF @MaxID IS NULL
SET @MaxID = 1
BEGIN TRY
Begin TRANSACTION
while(@Index>0)
begin
select @Temp= substring(@ware_subjectid, 1, @Index -1) --存储逗号隔开的每个值
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@Temp AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
RAISERROR (@err,16,1)
BREAK
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
RAISERROR (@err,16,1)
BREAK
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@Temp AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
--删除已处理字符串,重新转换位置
set @ware_subjectid = substring(@ware_subjectid, @Index+1, len(@ware_subjectid)-@Index)
set @Index = charindex(@splitchar, @ware_subjectid,1)
end
if(len(@ware_subjectid)>0) --逗号的最后一个值
BEGIN
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@voucherid AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
RAISERROR (@err,16,1)
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
RAISERROR (@err,16,1)
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@voucherid AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
END
COMMIT
END TRY
BEGIN CATCH
IF XACT_STATE()<>0
BEGIN
ROLLBACK TRAN
END
DECLARE @ErrorMessage_END NVARCHAR(4000);
DECLARE @ErrorSeverity_END INT;
DECLARE @ErrorState_END INT;
SELECT @ErrorMessage_END = ERROR_MESSAGE(),
@ErrorSeverity_END = ERROR_SEVERITY(),
@ErrorState_END = ERROR_STATE();
RAISERROR (@ErrorMessage_END, -- Message text.
@ErrorSeverity_END, -- Severity.
@ErrorState_END -- State.
);
END CATCH
ALTER PROC Export_Merge_MaterialW
(
@ware_subjectid NVARCHAR(max), --企业商品的id集合,逗号隔开
@err NVARCHAR(100) OUTPUT --出错返回的数据
)
AS
DECLARE @attr INT
SELECT @attr=0
/*本段代码做程序处理 循环@ware_subjectid的每条记录,如果v_no=0或null则进行更新序号操作*/
--复制字符串1份 一份保存@ware_subjectidTemp,另一份原来的@ware_subjectid--
DECLARE @ware_subjectidTemp NVARCHAR(max)
--分隔符--
DECLARE @splitchar CHAR(1)
--分隔符位置变量--
DECLARE @Index INT --分隔符
--分隔开的每个字符--
DECLARE @Temp VARCHAR(10)
--企业商品表的v_no最大值
DECLARE @MaxID BIGINT
--循环的索引值,递增--
DECLARE @Row_Index INT
--企业商品的id集合--
SELECT @ware_subjectidTemp = @ware_subjectid
--企业商品的g_no,用于判断是否已经做过企业物料备案--
DECLARE @g_no BIGINT
--企业商品表的voucherid(报关商品ID),没有值先做归并关系
DECLARE @voucherid BIGINT
DECLARE @v_no BIGINT
SELECT @Row_Index = 0
SELECT @splitchar=','
SELECT @Index = CHARINDEX(@splitchar, @ware_subjectid,1)
SELECT @MaxID = MAX(v_no)+1 FROM dbo.ware_subject WHERE attr=@attr
IF @MaxID IS NULL
SET @MaxID = 1
Begin TRANSACTION
while(@Index>0)
begin
select @Temp= substring(@ware_subjectid, 1, @Index -1) --存储逗号隔开的每个值
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@Temp AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK TRANSACTION
return
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK TRANSACTION
return
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@Temp AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
--删除已处理字符串,重新转换位置
set @ware_subjectid = substring(@ware_subjectid, @Index+1, len(@ware_subjectid)-@Index)
set @Index = charindex(@splitchar, @ware_subjectid,1)
end
if(len(@ware_subjectid)>0) --逗号的最后一个值
BEGIN
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@voucherid AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
ROLLBACK;
return;
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK;
return;
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@voucherid AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
END
COMMIT
ALTER PROC Export_Merge_MaterialW
(
@ware_subjectid NVARCHAR(max), --企业商品的id集合,逗号隔开
@err NVARCHAR(100) OUTPUT --出错返回的数据
)
AS
DECLARE @attr INT
SELECT @attr=0
/*本段代码做程序处理 循环@ware_subjectid的每条记录,如果v_no=0或null则进行更新序号操作*/
--复制字符串1份 一份保存@ware_subjectidTemp,另一份原来的@ware_subjectid--
DECLARE @ware_subjectidTemp NVARCHAR(max)
--分隔符--
DECLARE @splitchar CHAR(1)
--分隔符位置变量--
DECLARE @Index INT --分隔符
--分隔开的每个字符--
DECLARE @Temp VARCHAR(10)
--企业商品表的v_no最大值
DECLARE @MaxID BIGINT
--循环的索引值,递增--
DECLARE @Row_Index INT
--企业商品的id集合--
SELECT @ware_subjectidTemp = @ware_subjectid
--企业商品的g_no,用于判断是否已经做过企业物料备案--
DECLARE @g_no BIGINT
--企业商品表的voucherid(报关商品ID),没有值先做归并关系
DECLARE @voucherid BIGINT
DECLARE @v_no BIGINT
SELECT @Row_Index = 0
SELECT @splitchar=','
SELECT @Index = CHARINDEX(@splitchar, @ware_subjectid,1)
SELECT @MaxID = MAX(v_no)+1 FROM dbo.ware_subject WHERE attr=@attr
IF @MaxID IS NULL
SET @MaxID = 1
Begin TRANSACTION
while(@Index>0)
begin
select @Temp= substring(@ware_subjectid, 1, @Index -1) --存储逗号隔开的每个值
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@Temp AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
RETURN
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
RETURN
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@Temp AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
--删除已处理字符串,重新转换位置
set @ware_subjectid = substring(@ware_subjectid, @Index+1, len(@ware_subjectid)-@Index)
set @Index = charindex(@splitchar, @ware_subjectid,1)
end
if(len(@ware_subjectid)>0) --逗号的最后一个值
BEGIN
/*开始逻辑*/
SELECT @voucherid = voucherid, @g_no = g_no,@v_no = v_no FROM dbo.ware_subject WHERE id=CAST(@voucherid AS BIGINT)
--没有做过企业物料备案的不能继续
IF @g_no IS NULL OR @g_no <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业物料备案,请先做企业物料备案在做归并关系备案'
RETURN;
END
--没有做过归并关系的不能继续
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SELECT @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
RETURN;
END
--开始进行v_no的修改
IF @v_no IS NULL OR @v_no = 0 --没有序号的更新序号
BEGIN
UPDATE dbo.ware_subject SET v_no = @MaxID + @Row_Index WHERE id = CAST(@voucherid AS BIGINT)
SET @Row_Index = @Row_Index +1
END
/*结束逻辑*/
END
COMMIT
ROLLBACK TRANSACTION
后加上 return 试试
IF @voucherid IS NULL OR @voucherid <=0
BEGIN
SET @err ='您选中的商品至少有一项没有做过企业商品归并,请先做归并关系'
ROLLBACK TRANSACTION
return
END