Зравствуйте.
1. Можно ли в ms sql server посмотреть скомпилированную процедуру в байткоде?
2. Почему ms sql server интерпретатор не всегда заходит в if else условие, если не пишется begin end, напр. код процедуры:
begin
if @a1 < @a2
if @b1 < @b2
begin
op1..
op2..
end
else
if @c1 < @c2
begin
op3.. -- Сюда не всегда заходит интепретарор
op4..
end
end
Добавляем логирование и вдруг у нас код начинает работать:
begin
if @a1 < @a2
if @b1 < @b2
begin
op1..
op2..
end
else
if @c1 < @c2
begin
EXEC xp_logevent 60000, '...', informational;
op3.. -- Теперь сюда заходи. Хотя добавили только логирование
op4..
end
end
Убираем логирование, добавляем begin, end и код работает:
begin
if @a1 < @a2
begin
if @b1 < @b2
begin
op1..
op2..
end
end
else
begin
if @c1 < @c2
begin
op3.. -- Теперь сюда заходи.
op4..
end
end
end