将Varchar转换为存储过程输入的Datetime

时间:2014-04-17 09:56:39

标签: sql sql-server tsql

我想在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)) 

但似乎无法做到正确。我做错了什么?

2 个答案:

答案 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 )