1

В запросе ниже я получаю эту ошибку:ошибка CAST в тех случаях, когда пункт

Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow) 

Это, кажется, где положение, если я возьму его, кажется, работает. Поэтому я добавил приведение в предложение where без везения. Есть что-то особенное, что мне нужно сделать в предложении where, чтобы заставить это работать? Просто FYI это в отчете, который вытаскивает идентификатор из URL-адреса.

SELECT new_projects.new_projectsId AS ProjectId 
    , new_projects.new_name AS ProjectName 
    , new_projects.new_Description AS ProjectDescription 

FROM 
    new_projects 
    LEFT OUTER JOIN new_projectsteps 
     ON new_projects.new_projectsId = new_projectsteps.new_ProjectSteps2Id 
    LEFT OUTER JOIN Task 
     ON new_projectsteps.new_projectstepsId = Task.RegardingObjectId 
WHERE 
(new_projects.new_projectsId = cast(@id AS UNIQUEIDENTIFIER)) 

Спасибо!

EDIT:

Идентификатор в SQL является уникальный идентификатор, значение @Id тянут из строки запроса (URL). Так было бы: &id='BC02ABC0-A6A9-E111-BCAD-32B731EEDD84'

Извините за недостающую информацию.

+1

Если это работает без броска, почему вы бросаете? Какова ценность '@ id'? – RedFilter

+0

Он не работает без приведения. он работает без того времени, когда оператор –

+0

Мы не знаем, что такое 'new_projectsId' (какой тип), и не знаем, что вы передаете как' @ id' - как мы должны знать, как вам сказать почини это? [Мы не против читателей] (http://meta.stackexchange.com/a/128551/172661); если вы хотите, чтобы мы помогли вам, пожалуйста, сообщите нам информацию, чтобы использовать это. –

ответ

2

Я подозреваю, что одинарные кавычки проходят. Так как нет их там, лишив их перед передачей вашего параметра или использования:

WHERE new_projects.new_projectsId = CONVERT(UNIQUEIDENTIFIER, REPLACE(@id, '''', '')); 

При попытке прямого сравнения, когда GUID содержит другие символы, вы должны получить:

Msg 8169, Level 16, State 2, Line 1
Conversion failed when converting from a character string to uniqueidentifier.

Если это не то, что происходит, тогда не говорите: «id в SQL - это уникальный идентификатор» - показать ВСЕ код, чтобы мы могли попытаться воспроизвести проблему.

+0

безупречный! благодаря! –

Смежные вопросы