Точки останова не соответствуют строке кода при отладке в SQL Server 2008 R2

Точки останова не соответствуют строке кода при отладке в SQL Server 2008 R2. Иногда при попадании в точки останова не выполняется правильная строка кода. Как это исправить?

declare @SharedTable table(Num int,Name nvarchar(50))
Insert into @SharedTable(Num,Name) values('27149','Vader')

declare @numShared int=0;
select @numShared = COUNT(Num) from @SharedTable
declare @idx_Shared int =1

while @idx_Shared<=@numShared
begin
    declare @Num int;declare @Name nvarchar(50)
    select @Name=Name,@Num=Num from @SharedTable
    declare @AllSharers nvarchar(max)=''
    set @AllSharers+=('Num:'+Cast(@Num as nvarchar)+'    '+'Name:'+@Name+CHAR(10))
    set @idx_Shared+=1
end

print @AllSharers;

Очень простая копия кода из моего запроса. Каждый раз, когда указатель отладки переходит на строку select @Name=Name,@Num=Num from @SharedTable, он игнорирует приведенный ниже код в цикле while, и с этого момента весь приведенный ниже код и точки останова начинают не совпадать.

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


person NFDream    schedule 26.07.2014    source источник
comment
Можете ли вы быть более конкретным или привести пример?   -  person dodexahedron    schedule 26.07.2014
comment
Коды немного длинные, я также не могу найти, в чем проблема, коды работают нормально. Может ли текстовый формат вызвать проблему?   -  person NFDream    schedule 26.07.2014
comment
И иногда указатель точек останова может вернуться к строке выше точки останова, с которой в данный момент срабатывает.   -  person NFDream    schedule 26.07.2014


Ответы (1)


SQL Server сообщит о строке кода, с которой запущен данный оператор, при сообщении об ошибке или достижении точки останова. Таким образом, если у вас есть что-то вроде этого:

SELECT *
FROM [tableName]
WHERE 1 = 'text'

Если вы поместите точку останова в строку 3, SQL Server прервется в строке 1 (и сообщит, что ошибка произошла в строке 1, когда вы продолжите), потому что оператор действительно начинался в строке 1, а пробелы не имеют значения. в SQL.

person dodexahedron    schedule 26.07.2014
comment
В коде нет ошибок, он работает нормально, только точки останова не соответствуют строке кода. - person NFDream; 26.07.2014
comment
То же самое можно сказать и о точках останова. Если вы поставите точку останова на строку 3 того, что я написал, она сломается на строке 1. - person dodexahedron; 26.07.2014
comment
В моем коде ничего подобного нет, может быть, я не совсем ясно выразился. Когда точка останова срабатывает, следующим шагом для выполнения является не код, на котором стоит точка останова, а другой. - person NFDream; 26.07.2014
comment
Тогда на вопрос действительно нельзя ответить без примера кода. Пожалуйста, приведите пример, и я или кто-то другой сделаю все возможное, чтобы помочь вам, я уверен. - person dodexahedron; 26.07.2014
comment
Может быть, я могу сократить код, чтобы представить проблему, я пытаюсь - person NFDream; 26.07.2014