Предполагая, что ваш код C # отправляет правильный запрос в базу данных, есть несколько способов для Oracle выполнить один и тот же запрос по-разному в зависимости от сеанса.Вам может потребоваться привлечение администратора базы данных, чтобы выяснить это (например, путем просмотра фактически выполненного оператора в v $ sql) или, по крайней мере, исключить эти странные случаи.
NLS_DATE_FORMAT
Если столбец DATE хранится в виде строки, произойдет неявное преобразование в дату.Если SQL Navigator использует другой NLS_DATE_FORMAT, чем C #, преобразование может создать разные даты.Хотя если бы они были разными, есть большая вероятность, что вы получите ошибку, а не только 0 строк.
Виртуальная частная база данных
VPD можетдобавить предикат к каждому запросу, возможно, используя другую информацию о сеансе.Например, если программа, создавшая сеанс, похожа на «% Navigator%», она может добавить «где 1 = 0» к каждому запросу.(Я знаю, это звучит безумно, но я видел нечто очень похожее.)
Расширенный переписать запрос
Это предназначено для материализованных представлений,Но некоторые люди используют это для исправления производительности, вроде как сохраненные схемы.И некоторые злые люди используют его, чтобы переписать ваш запрос в совершенно другой запрос.Различные настройки сеанса, такие как QUERY_REWRITE_INTEGRITY и CURSOR_SHARING, могут объяснить, почему запрос работает в одном сеансе, а не в другом.Говоря о CURSOR_SHARING, это может привести к редким проблемам, если для него установлено значение SIMILAR или FORCE.