当前位置: 代码迷 >> .NET分析设计 >> 帮小弟我看看小弟我的SQL语句
  详细解决方案

帮小弟我看看小弟我的SQL语句

热度:737   发布时间:2013-02-25 00:00:00.0
帮我看看我的SQL语句
CREATE PROCEDURE UPLOAD_YESTERDAY_DATA
@YESTERDAY datetime  =getdate,
@TABLENAME VARCHAR(100)='ddd',
@ITEMNAME VARCHAR(100)
AS 
print @YESTERDAY
DECLARE @VSQL1  varchar(2000) ,@VSQL2  varchar(2000)
BEGIN
SET @VSQL1='INSERT INTO [dbo].['+@TABLENAME+']  SELECT* FROM [dbo].[TODAY'+@TABLENAME+'] WHERE  ['+@ITEMNAME+'] < '''+ convert(varchar(10),getdate(),120)+' 00:00:00'''
SET @VSQL2='DELETE FROM [dbo].[TODAY'+@TABLENAME++'] WHERE  ['+@ITEMNAME+'] < '''+ convert(varchar(10),getdate(),120)+' 00:00:00'''
EXEC  (@VSQL1)
EXEC  (@VSQL2)
END

GO
EXEC UPLOAD_YESTERDAY_DATA  @TABLENAME='检测结果二',@ITEMNAME='检测时间'

执行的报错 从字符串转换为 datetime 时发生语法错误。

从字符串转换为 datetime 时发生语法错误。
改成这样也不行,直接语法检查就通不过 奇怪。
@YESTERDAY datetime  =getdate(),
------最佳解决方案--------------------------------------------------------
 EXEC UPLOAD_YESTERDAY_DATA getdate(),'检测结果二','检测时间'
------其他解决方案--------------------------------------------------------
我设定默认值就是为了可以不要传这个参数也可以,我刚刚得到答案是,默认值中不可以使用函数只能用常量表示,所以不对。
  相关解决方案