преобразовать в вызов хранимой процедуры? - PullRequest
3 голосов
/ 14 января 2010

У меня есть следующий кусок 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;

Кто-нибудь может объяснить?

Ура, Jan

Ответы [ 3 ]

9 голосов
/ 14 января 2010

Вы не можете вызывать функции при передаче аргументов. Ожидается, что эти значения параметров будут постоянными или параметрами.

2 голосов
/ 14 января 2010

Вы не можете передавать функции и т. Д. Хранимым процедурам, только переменным или постоянным значениям ...

0 голосов
/ 14 января 2010

В первом случае вы вызываете функцию CONVERT в команде execute, которая не разрешена. Вы не можете вызывать функции при передаче аргументов

EXECUTE insert_mail ... CONVERT(DATETIME, '2015-01-18 14:03:13', 120)

Я не вижу смысла в использовании функции конвертирования. Просто введите дату без конвертации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...