Assuming your C # code is sending the correct request to the database, there are several ways in which Oracle can execute the same request in different ways depending on the session. You may need to get a DBA to work to figure this out (for example, by looking at the actual executable statement in v $ sql) or at least eliminate these strange cases.
NLS_DATE_FORMAT
If the DATE column is stored as a string, an implicit conversion to date will occur. If SQL Navigator uses a different NLS_DATE_FORMAT than C #, the conversion may produce different dates. Although, if they were different, you would have a good chance of getting an error, and not just 0 lines.
Virtual private database
VPD can add a predicate to each request, possibly using different session information. For example, if the program that created the session is like โ% Navigator%โ, it can add 'where 1 = 0' to each request. (I know this sounds crazy, but I saw something very similar.)
Advanced Request Forwarding
It is intended for materialized presentations. But some people use it for performance fixes, sort of like saved outlines. And some evil people use it to rewrite your request into a completely different request. Various session settings, such as QUERY_REWRITE_INTEGRITY and CURSOR_SHARING, may explain why the request works in one session, but not in another. Speaking of CURSOR_SHARING, this can lead to some rare problems if it is installed in SIMILAR or FORCE.
source share