日期:2014-05-17  浏览次数:20884 次

一个奇怪的小问题,Why??? 数据赋值。
select  replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')

这样可以,执行没有问题。

declare  @DANoTest             Char(32);--2011 01 12 18 23 45207
select  @DANoTest  = replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')

这样就不行,查不出来结果。
为什么呢???    只是声明了一个变量啊。


------最佳解决方案--------------------
引用:
@DATime=GETDATE()
存储过程传参不能这么调用函数 ,必须要给变量值, 先定义变量再赋值 ,像@DANoTest 这样

应该是8楼说的问题,也同意像这样的变量没必要在外面传参了
------其他解决方案--------------------
select  replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')


declare  @DANoTest   Char(32);--2011 01 12 18 23 45207
set   @DANoTest  =CONVERT(CHAR(32),replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.',''))
SELECT @DANoTest

------其他解决方案--------------------
select  @DANoTest  = replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')
这只是变量赋值 ,没有查询啊
后面再跟上这句: select @DANoTest
------其他解决方案--------------------
@DANo=replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.',''),
类似这样的赋值前面都要加一个set,如:
set @DANo=replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')
------其他解决方案--------------------
@DATime=GETDATE()
存储过程传参不能这么调用函数 ,必须要给变量值, 先定义变量再赋值 ,像@DANoTest 这样
------其他解决方案--------------------
应该是存储过程里面的错误,你自己F11逐步执行看在哪一步出错,或者把存储过程贴出来看看
------其他解决方案--------------------
其实像 getdate()这种参数根本没必要传 ,在存储过程里写个变量就可以了 。外面传过去和里面定义一个效果还不一样? 猴麻烦的
------其他解决方案--------------------
存储过程执行语法检查都过不了 ,怎么可能是存储过程的问题?
------其他解决方案--------------------
引用:
其实像 getdate()这种参数根本没必要传 ,在存储过程里写个变量就可以了 。外面传过去和里面定义一个效果还不一样? 猴麻烦的
同意,这些系统内置函数最好不要以参数形式穿进去,而是写在里面
------其他解决方案--------------------
刚想解释,泡杯茶回来就说了
------其他解决方案--------------------
把整个存储过程搞出来看看,你第一个红字多了个逗号
------其他解决方案--------------------
为什么执行存储过程的时候,这样赋值不行呢?

exec  Usp_DAListForEnergyDataDetailsiping 
 
 @DANo=replace(replace(replace(replace(CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.',''),

@DATime=GETDATE() ,@LogTime=GETDATE(),@MeterType='EM',@MeterNo='A08001',@Qty=100  

问题报出错误:

消息 102,级别 15,状态 1,第 1 行
Incorrect syntax near 'replace'.