注册 登录
编程论坛 SQL Server论坛

高手帮忙-->bygg转移

hongzhongmin 发布于 2007-03-09 20:52, 508 次点击

数据库里面创建一个存储过程,
CREATE PROCEDURE dbo.proc_newSale
( @shoeID varchar(50),@colocID varchar(50),@CmdNOID int,@rateID int)
AS
if ...如果插入的"名称,颜色,尺寸"是一样的那就用update,如果是不一样的那就用insert;;;;那请问要在这边怎么做判断呢`??
begin transaction
insert 库存表(名称,颜色,尺寸,价格) values(@shoeID,@colocID,@CmdNOID,@rateID )
else ..就执行下面的代码..

update 库存表
set 数量=数量+@quantity
where 名称=@shoeid and 颜色=@colocID and 尺寸=@CmdNOID
if @@error<>0
begin
raiserror('发生错误',16,1)
rollback tran
return
end
commit tran
RETURN

4 回复
#2
初学Delphi2007-03-12 10:33
...如果插入的"名称,颜色,尺寸"是一样的那就用update
没明白什么意思,名称、颜色和尺寸是一样的?
数据类型都不一样 值怎么可能一样?
是不是要查询如果
名称,颜色,尺寸存在的时候用update
如果是的话
定义一个int类型变量
@i
select @i=count(*) from 库存表 where 名称=@shoeid and 颜色=@colocID and 尺寸=@CmdNOID
if @i==0
insert into
else
update


最后一个
你结束事物的那句也有问题
应该写在else里面
如果@@error<>0
回滚事物完成,再结束事物?没有对应的了
#3
棉花糖ONE2007-03-12 11:19
他的意思应该是数据库中如果存在这种产品就update,如果是新产品就insert    
if exists(select 1 from shiyan where 名称=@shoeid and 颜色=@colocID and 尺寸=@CmdNOID)
update 语句
else
insert 语句
#4
初学Delphi2007-03-12 16:32
呵呵  还是你的方法简单一些
#5
cyyu_ryh2007-03-13 13:01
很久没来这里了
看看
学习学习
1