帮我看看我的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(),'检测结果二','检测时间'
------其他解决方案--------------------我设定默认值就是为了可以不要传这个参数也可以,我刚刚得到答案是,默认值中不可以使用函数只能用常量表示,所以不对。