读书人

存储过程有关问题~大哥大姐小妹妹来帮

发布时间: 2012-02-25 10:01:48 作者: rapoo

存储过程问题~!大哥大姐小妹妹来帮忙~!! 在线等 !~
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 输出来看看

读书人网 >asp.net

热点推荐