存储过程问题~!大哥大姐小妹妹来帮忙~!! 在线等 !~
CREATE PROCEDURE Select_Insert_Cart_Proc
@CID int,
@PID int
AS
declare @flag int
set @flag=0
if(@CID=(select CID from tosell where PID=@CID))
begin
set @flag=2
end
else
begin
if not exists( select * from cart where CID=@CID and PID=@PID)
begin
set @flag=1
insert into cart (CID,PID) values (@CID,@PID)
end
else
begin
set @flag=-1
end
end
return @flag
GO
我要做一个购物车的程序,其中 @CID 传递的是当前浏览的用户; @PID是当前用户正在浏览的货物号。
表 tosell 代表正在销售中的物品,其中PK 是 PID ,外键 有 CID (customer表中主键)
先检测 当前正在浏览的用户 @CID 是不是与 tosell 中的 CID 一样,如果一样,就不能把自己的物品放入购物车....后面的就不用说了吧 ,可是,为什么我得不到
@flag=2的情况,就算是自己买自己的东西。 帮忙。。。。。
------解决方案--------------------小妹妹小弟弟
------解决方案--------------------CREATE PROCEDURE Select_Insert_Cart_Proc
@CID int,
@PID int
AS
declare @flag int,
declare @tempID int
set @flag=0
select top 1 @tempID = CID from tosell where PID=@CID
if @CID = @tempID
begin
set @flag=2
end
else
begin
if not exists( select * from cart where CID=@CID and PID=@PID)
begin
set @flag=1
insert into cart (CID,PID) values (@CID,@PID)
end
else
begin
set @flag=-1
end
end
return @flag
GO
这样行不行?
------解决方案--------------------select CID from tosell where PID=@CID
检测这句返回得记录集
如果是多条. 会有错误.
------解决方案--------------------@CID=(select CID from tosell where PID=@CID)
这个表达式左边是个变量,而右边可能是个集合所以不相等,结果为false;
------解决方案--------------------select top 1 @tempID = CID from tosell where PID=@CID
if @CID = @tempID
-------------
把这个@tempID 输出来看看