注意:执行此存储过程时没有错误,但它不会返回结果作为I方面。
表catmaster
包含某些项目,例如:
1. Apple
2. Banana
3. Graphs
现在看看这个存储过程
ALTER proc [dbo].[StockValueUpdatedd]
(
@companyID int,
@date varchar(15),
@value decimal(12,2),
@openbal decimal(12,2),
@newgoods varchar(100),
@oldgoods varchar(100)
)
as
set nocount off
declare @ngoodss varchar(100)
declare @ogoodss varchar(100)
select @ngoodss=catname from catmaster where companyID=@companyID and catname=@newgoods
select @ogoodss=catname from catmaster where companyID=@companyID and catname=@oldgoods
if @ogoodss <> @ngoodss
begin
if not exists
(
select catname from catmaster where companyID=@companyID and catname=@newgoods
)
begin
update catmaster set openbal=@openbal,
openbalvalue=@value,
catname=@newgoods
where companyID=@companyID
and catname=@oldgoods
end
else
begin
raiserror('Check Duplicate',16,10)
end
end
如果我尝试将存在项更新为另一个存在iItems然后按照上面的存储过程它会抛出错误。没关系但是如果我试图将存在的项目修改为新项目,那么查询上面的存储过程应该没有效果。
例如:如果我尝试修改Apple
到Mango
等现有项目,那么它应该保持Apple
而不是Mango
- 为什么?。
这个存储过程有什么错误?