SQL Server и GUID? - PullRequest
       10

SQL Server и GUID?

0 голосов
/ 26 марта 2012

Я пытаюсь запустить этот код:

exec myStoredProcedure 
    Cast('c5b48202-36af-4597-9780-5366d4188f55' AS uniqueidentifier), 
    744, 
    1, 
    'test', 
    'Chrysanthemum.jpg', 
    '2012-03-26 16:22:17', 
    1, 
    28402, 
    null

Но я получаю следующее исключение

Сообщение 102, Уровень 15, Состояние 1, Строка 2
Неверносинтаксис рядом с 'c5b48202-36af-4597-9780-5366d4188f55'.

Почему?И как мне это исправить?

Ответы [ 3 ]

3 голосов
/ 26 марта 2012

Вы не можете сделать CAST при вызове хранимой процедуры.Либо вы присваиваете это переменной перед выполнением sp, либо просто вызываете ее, передавая VARCHAR как есть (это, вероятно, будет прекрасно выполнять неявное приведение).

DECLARE @GUID UnIQUEIDENTIFIER
SET @GUID = 'c5b48202-36af-4597-9780-5366d4188f55'

EXEC myStoredProcedure @GUID,  744, 
    1, 
    'test', 
    'Chrysanthemum.jpg', 
    '2012-03-26 16:22:17', 
    1, 
    28402, 
    null
1 голос
/ 26 марта 2012

Видимо, вы не можете использовать приведение в списке параметров. Я просто хотел быть уверен, поэтому я провел небольшой тест:

create procedure myProc
@param1 uniqueidentifier
as 
begin
select 1
end


exec myProc Cast('c5b48202-36af-4597-9780-5366d4188f55' AS uniqueidentifier) -- fails
exec myProc 'c5b48202-36af-4597-9780-5366d4188f55' --ok
0 голосов
/ 26 марта 2012

Вы не можете использовать вычисления в команде EXEC.

Вы должны сделать так:

DECLARE @guid uniqueidentifier

SET @guid = 'c5b48202-36af-4597-9780-5366d4188f55'

exec myStoredProcedure 
    @guid, 
    744, 
    1, 
    'test', 
    'Chrysanthemum.jpg', 
    '2012-03-26 16:22:17', 
    1, 
    28402, 
    null
...