日期:2014-05-18  浏览次数:20508 次

请问我这个存储过程没有没有漏洞呢?
/******   对象:   存储过程   dbo.ApplyGaoZhao         脚本日期:   2003-9-1   10:38:41   ******/    
--申请推荐高招    
CREATE   PROCEDURE   ApplyGaoZhao    
(    
          @gaozhaoid   INT,    
          @userid   INT,    
          @result   INT   OUTPUT    
)    
AS    
DECLARE     @Total     INT    
DECLARE     @gold     INT    
SELECT    
@Total=COUNT(*)    
FROM    
GaoZhaoInfo    
WHERE    
DATEDIFF(SECOND,ApplyDate,GETDATE()) <604800    
IF     @Total <30    
SELECT    
@gold=Gold    
FROM    
UserLogin    
WHERE    
UserId=@userid    
ELSE   SELECT    
@result=-1    
IF   @gold> =20    
EXECUTE     ApplyGaoZhao2     @gaozhaoid,@userid    
ELSE   SELECT      
@result=-2    
IF   @@ROWCOUNT   > =   1    
SELECT    
@result=1    
ELSE   SELECT    
@result=0    
GO

请问我这个存储过程没有没有漏洞呢?
它总是不能实现我的要求
特别是这几个IF判断,不知道是不是这样子用
谢谢!

------解决方案--------------------
功能应该可以的,结构不清晰,If语句内部最好用Begin,End
------解决方案--------------------
1.IF @Total> =30 AND @gold <20 ...,@result会赋两个不同的值;不提倡。
2.@@ROWCOUNT的值由哪次执行影响的,是不确定的。
------解决方案--------------------
1.注意缩进
2.最好加上 BEGIN END

------解决方案--------------------
你会给result赋值好两次如果total大于30 先是-1 然后-2
------解决方案--------------------
存储过程里的漏洞?