Proc дает таинственные результаты
Итак, у меня есть процесс, написанный кем-то другим, с кодом, подобным следующему:
if 1 = 0
begin
select
cast(null as int) as case_id,
cast(null as int) as review_id,
end
--then a real select statement happens that matches the same pattern.
Теперь HP exstream каким-то образом читает оператор верхнего выбора при выполнении хранимого процесса, даже если его никогда не вызывать. Если я добавлю столбцы в запрос реального результата, не добавляя пустой столбец в этот скрытый запрос, он не будет работать (в HP exstream, на SQL-сервере процесс запускается, как и следовало ожидать).
У кого-нибудь есть идеи о том, как это может работать? Как HP Exstream может читать этот неисполняемый код?
1 ответ
Я не знаю, в какой кодовой базе это написано, но я предполагаю, что это в сценарии диалога. Поскольку движок exstream основан на C++, мой первый вопрос касается синтаксиса оператора IF.
IF 1 = 0 в C - это не то же самое, что IF 1 == 0. Первый определяет истинность утверждения, основываясь на успешности изменения экземпляра со значением 1 в экземпляр со значением ноль. Следовательно, это всегда будет правдой. Последний фактически сравнивает два значения, которые, очевидно, всегда будут ложными.
Не зная больше о ситуации, я бы посмотрел на это в первую очередь.