购物车转换,遇到这样的一个存储过程,请问怎样解决呢,困扰多天了,请高手们多多帮忙

ykhads 2005-03-05 03:31:59

现在要达到的目的是要把未登录用户购买的物品的cartname转成已登录用户的cartname
首先要判断这些物品是否已经存在已登录用户的购物车里,如果存在则把购物车内已登录用户的相关物品的quantity加上未登录用户的相关物品的quantity,如果不存在,则把未登录用户的cartname转成为已登录用户的cartname
但我现在碰到的问题是,判断@pid是否等于@pid2,并不是一个个数字来判断,而是一起判断
就是说,比如有@pid=1,@pid=2,@pid=3 @pid2=2,@pid2=3,@pid2=4
@pid和@pis2有2,3这两个数相同,但是以下的程序的结果并不是一个个判断,而是1 2 3 和2 3 4一起判断,从而不可能达到一个个判断的效果,我现在要问的问题是如何让他们一个个进行判断,而不是一起判断,这个问题困扰我很多天了,我一直找不到解决之道,还请各位朋友们多多帮忙
create proc shoppingcartmigrate---未登录用户和登录用户之间购物车号的转换
(@oldcartname nvarchar(50),@newcartname nvarchar(50))
as
declare @pid int
declare @pid2 int
declare @quantity int
select @pid=pid from shoppingcart where cartname=@newcartname
select @pid2=pid,@quantity=quantity from shoppingcart where cartname=@oldcartname
if @pid=@pid2
begin
update shoppingcart set quantity=quantity+@quantity where cartname=@newcartname and
@pid=@pid2
end
else
begin
update shoppingcart set cartname=@newcartname where cartname=@oldcartname and @pid!=@pid2
end
GO
...全文
216 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohui 2005-03-16
  • 打赏
  • 举报
回复
create proc shoppingcartmigrate--未注册用户和注册用户之间购物车号的转换
(@oldcartname nvarchar(50),@newcartname nvarchar(50))
as
declare @pid2 int
declare @quantity int
select @quantity=quantity from shoppingcart where cartname=@oldcartname --这句起什么作用
declare cur cursor for
select cart.pid,quantity from shoppingcart cart where cartname=@oldcartname
open cur
fetch next from cur into @pid2,@quantity
while @@fetch_status=0
begin
update shoppingcart set quantity=quantity+@quantity where cartname=@newcartname and pid=@pid2
update shoppingcart set cartname=@newcartname where cartname=@oldcartname and pid!=@pid2
end
close cur
deallocate cur
GO

你再试试这段,看行不行
ykhads 2005-03-16
  • 打赏
  • 举报
回复
create proc shoppingcartmigrate--未注册用户和注册用户之间购物车号的转换
(@oldcartname nvarchar(50),@newcartname nvarchar(50))
as
declare @pid2 int
declare @quantity int
select @quantity=quantity from shoppingcart where cartname=@oldcartname
declare cur cursor for
select cart.pid from shoppingcart cart where cartname=@oldcartname
open cur
fetch next from cur into @pid2
while @@fetch_status=0
begin
update shoppingcart set quantity=quantity+@quantity where cartname=@newcartname and pid=@pid2
update shoppingcart set cartname=@newcartname where cartname=@oldcartname and pid!=@pid2
end
close cur
deallocate cur
GO

麻烦了,非常感谢你
ohui 2005-03-15
  • 打赏
  • 举报
回复
你对不对举个例子。这样我要测试。
ohui 2005-03-15
  • 打赏
  • 举报
回复
把你测试的代码帖出来。
ykhads 2005-03-14
  • 打赏
  • 举报
回复
ykhads 2005-03-14
  • 打赏
  • 举报
回复

ykhads 2005-03-13
  • 打赏
  • 举报
回复
这段代码测试了,没效果
购物车cartname和quantity都没转过来
...........
ykhads 2005-03-11
  • 打赏
  • 举报
回复
可以用游标来遍历一遍,就可以一个一个的比较了。
要怎么做呢
举个例子吧

除了游标还有其他方法吗

我现在就是卡在@pid和@pid2有多个值,如何一个个比较这个问题上
ohui 2005-03-11
  • 打赏
  • 举报
回复
SQL里遍历只能用游标。


declare @colname Varchar
declare cur cursor for --定义游标
select a.pid2
from shoppingcart a
open cur
fetch next from cur into @pid2
while @@fetch_status = 0
begin
update shoppingcart set quantity=quantity+@quantity
where cartname=@newcartname and pid=@pid2

update shoppingcart set cartname=@newcartname
where cartname=@oldcartname and pid!=@pid2
end
close cur
deallocate cur
ohui 2005-03-10
  • 打赏
  • 举报
回复
还有你的结构不是与要什么样的结果不是太清楚。你最好举个例子
ohui 2005-03-10
  • 打赏
  • 举报
回复
可以用游标来遍历一遍,就可以一个一个的比较了。
ykhads 2005-03-10
  • 打赏
  • 举报
回复
顶。。。。
ykhads 2005-03-10
  • 打赏
  • 举报
回复
请问怎么分解呢,能不能给个例子,我以前没搞过这个,还望多多支持
lh1979 2005-03-07
  • 打赏
  • 举报
回复
分解不就的了
ykhads 2005-03-06
  • 打赏
  • 举报
回复
tt
ykhads 2005-03-05
  • 打赏
  • 举报
回复
tt

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧