我想在T-SQL中的存储过程中使用datetime
参数,如果NULL将恢复为12/31/9999
。
我的代码如下所示:
EXEC abc.someStoredProc @i_param1, @i_param2, ISNULL(@l_Termination_date, '12/31/9999')
我收到错误:
' @ l_Termination_date'
附近的语法不正确
我尝试过使用转换和转换(例如:
ISNULL(@l_Termination_date,CAST('12/31/9999' AS datetime))
但似乎无法做到正确。我做错了什么?
答案 0 :(得分:4)
您可以将变量或文字作为参数传递以执行存储过程(或调用少数特定函数之一),但您可以做的是具有任意表达式。< / p>
将其移至单独的步骤:
SET @l_Termination_date = ISNULL(@l_Termination_date,'99991231')
EXEC abc.someStoredProc
@i_param1
, @i_param2
,@l_Termination_date
(如果您不想覆盖@l_Termination_date
,请使用单独的变量)
答案 1 :(得分:1)
DECLARE @l_Termination_date DATE ;
SET @l_Termination_date = ISNULL(@l_Termination_date,'12/31/9999')
EXEC dbo.USP_abc.someStoredProc (
@i_param1
, @i_param2
,@l_Termination_date )