关于存储过程
表tbbom2
ID prodno fno cno num lvl
12HY50-7HY50-7HY50-7 1.00000
13HY50-71200100100341.00001
14HY50-71200100100351.00001
45QKS18QKS18QKS18 1.00000
46QKS184500100100341.00001
47QKS184500100100352.00001
48QKS184500100100363.00001
49QKS184500100100374.00001
50QKS184500100100385.00001
51QKS184500100100396.00001
320209-3-20209-3-20209-3-2 1.00000
53QKS184500100100418.00001
表tmp_bom2
ID prodno fno cno num lvl
46QKS184500100100341.00001
47QKS184500100100352.00001
48QKS184500100100363.00001
49QKS184500100100374.00001
50QKS184500100100385.00001
53QKS184500100100418.00001
存储过程:updatetbbom2
CREATE PROCEDURE updatetbbom2
@prodno varchar,
@tmplvl numeric(18,0)
AS
delete from tbbom2 where prodno=@prodno and fno+cno+cast(lvl as varchar(50)) not in
(select fno+cno+cast(lvl as varchar(50)) from tmp_bom2) and lvl=@tmplvl
update tbbom2 set fno=tmp_bom2.fno,
cno=tmp_bom2.cno,num=tmp_bom2.num,bz=tmp_bom2.bz
from tmp_bom2 where tbbom2.fno=tmp_bom2.fno and tbbom2.cno=tmp_bom2.cno and tbbom2.lvl=tmp_bom2.lvl
insert into tbbom2
(prodno,fno,cno,num,lvl,bz)
select prodno,fno,cno,num,lvl,bz from tmp_bom2
where fno+cno+cast(lvl as varchar(10)) not in
(select fno+cno+cast(lvl as varchar(10)) from tbbom2)
我在查询分析器中执行:
exec updatetbbom2 'QKS18 ',1
返回结果
(所影响的行数为 0 行)
(所影响的行数为 6 行)
(所影响的行数为 0 行)
直接执行:select * from tbbom2 where prodno= 'QKS18 ' and fno+cno+cast(lvl as varchar(50)) not in
(select fno+cno+cast(lvl as varchar(50)) from tmp_bom2) and lvl=1
返回一行数据!不得其解还请前辈们帮忙!
[解决办法]
把你的
delete from tbbom2 where prodno=@prodno and fno+cno+cast(lvl as varchar(50)) not in
(select fno+cno+cast(lvl as varchar(50)) from tmp_bom2) and lvl=@tmplvl
写到字符串变量里 然后打印出来
看看跟你写的有什么不同
关于存储过程,该如何解决
关于存储过程表tbbom2IDprodnofnocnonumlvl12HY50-7HY50-7HY50-71.0000013HY50-71200100100341.0000114HY5
