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

执行存储过程:EXEC+参数。为什么参数不能用GETDATE(),这类函数
相同的参数 ,为什么不可以这样来第一个这样传,第二个则可以。
EXEC GetSocketBillNum 'hour','2011-12-11','2011-12-12'

SQL code
EXEC GetSocketBillNum 'hour',CONVERT(VARCHAR(12),CONVERT(VARCHAR(12),GETDATE(),23)


下面这个 我猜测是因为,我用了函数,所以它知道先执行哪个了?  

SQL code
declare @date1 varchar(12)
declare @date2 varchar(12)
SELECT @date1=CONVERT(VARCHAR(12),DATEADD(DAY,-1,GETDATE()),23)
select @date2=CONVERT(VARCHAR(12),GETDATE(),23)
print @date1+'   '+@date2
EXEC GetSocketBillNum 'hour',@date1,@date2


------解决方案--------------------
存储过程参数只认变量,不认函数
------解决方案--------------------
过程的参数值,应该是一个确定的常量.而不是需要通过计算的表达式
------解决方案--------------------
参数不参与计算
------解决方案--------------------
貌似是规定喔, 没啥好解释的.