问题描述
- 带日期参数的存储过程,调用时总提示语法错误
-
带日期参数的存储过程,直接使用getdate()函数,即写成exec procFD0 '2012-1-1',getdate()
第二个参数总是提示语法错误,不是很明白,大家指导一下。换一种思路以后,写成下面的样子就通过了:
declare @BeginTime datetime
declare @EndTime datetimeselect @BeginTime=dateadd(day,-1,getdate())
select @EndTime=GETDATE ()exec proc_FD0 @BeginTime,@EndTime
?PS:应该跟数据类型没有关系,我用convert强转了也是没有用
解决方案
区别应该在于getDate是函数,@EndTime是变量。还真没这么用过。查查存储过程的参数是否支持函数
解决方案二:
确实是没有办法的啦,只能用变量中转一下。存储过程参数不支持。
sqlserver很多东西不支持 getdate(),你可以在自定义的标量函数中去用一下,保证你用不了。
别问为什么,如果你能当上微软ceo,你也可以把这里改成支持。
IF OBJECT_ID('dbo.Proc_test') IS NOT NULL
BEGIN
DROP PROC dbo.Proc_test
END
GO
CREATE PROC dbo.[Proc_test] @t DATETIME
AS
BEGIN
SELECT @t
END
GO
DECLARE @t DATETIME
SET @t=GETDATE()
EXEC Proc_test @t
时间: 2024-09-20 15:57:13