一个奇怪的小问题,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),'-',''),' ',''),':',''),'.','')
这样就不行,查不出来结果。
为什么呢??? 只是声明了一个变量啊。
------最佳解决方案--------------------
应该是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()这种参数根本没必要传 ,在存储过程里写个变量就可以了 。外面传过去和里面定义一个效果还不一样? 猴麻烦的
------其他解决方案--------------------存储过程执行语法检查都过不了 ,怎么可能是存储过程的问题?
------其他解决方案--------------------同意,这些系统内置函数最好不要以参数形式穿进去,而是写在里面
------其他解决方案--------------------刚想解释,泡杯茶回来就说了
------其他解决方案--------------------把整个存储过程搞出来看看,你第一个红字多了个逗号
------其他解决方案--------------------为什么执行存储过程的时候,这样赋值不行呢?
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'.