帮我看看我的SQL语句
CREATE PROCEDURE UPLOAD_YESTERDAY_DATA
@YESTERDAYdatetime =getdate,
@TABLENAMEVARCHAR(100)='ddd',
@ITEMNAMEVARCHAR(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 时发生语法错误。
改成这样也不行,直接语法检查就通不过 奇怪。
@YESTERDAYdatetime =getdate(),
[最优解释]
EXEC UPLOAD_YESTERDAY_DATA getdate(),'检测结果二','检测时间'
[其他解释]
我设定默认值就是为了可以不要传这个参数也可以,我刚刚得到答案是,默认值中不可以使用函数只能用常量表示,所以不对。