转换存储过程调用?

时间:2010-01-14 19:50:52

标签: sql-server stored-procedures

我有以下SQL不起作用:

declare @id INT; 
set @id=0; 
exec insert_mail @id OUTPUT, 'ZLgeOZlqRGC6l57TyD/xYQ==', 4928, '2010\01\14\14\03131_2.eml', 'Suz, Katie and Kourtney''s Housewarming Party', CONVERT(DATETIME, '2015-01-18 14:03:13', 120); 
select @id;

并以这种方式更改它修复它:

declare @id INT; 
set @id=0; 
declare @p_valid_until datetime;
set @p_valid_until=CONVERT(DATETIME, '2015-01-18  14:03:13', 120)
exec insert_mail @id OUTPUT, 'ZLgeOZlqRGC6l57TyD/xYQ==', 4928, '2010\01\14\14\03131_2.eml', 'Suz,  Katie and Kourtney''s Housewarming Party', @p_valid_until; 
select @id;

任何人都可以解释一下吗?

干杯, 扬

3 个答案:

答案 0 :(得分:9)

您无法在传递参数时调用函数。这些参数值应该是常量或参数。

答案 1 :(得分:2)

您不能将函数等传递给存储过程,只传递变量或常量值......

答案 2 :(得分:-2)

在第一种情况下,您在执行命令中调用CONVERT函数,这是不允许的。你不能在传递参数

时调用函数
EXECUTE insert_mail ... CONVERT(DATETIME, '2015-01-18 14:03:13', 120)

我没有看到使用转换功能的意义。只需输入日期而不转换。