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