The Problem
Your report region displays “No data found” even though you can see the data in SQL Developer. This is one of the most frustrating APEX issues because the SQL works perfectly outside of APEX.
Cause 1: Bind Variables Are NULL
The report query uses bind variables like :P10_DEPT_ID that have not been set when the report renders. In SQL Developer you tested with hard-coded values, but in APEX the page item is null on first load. Fix: add a default value to the page item, or modify the query to handle null:
-- Handle null bind variable
SELECT * FROM orders
WHERE (:P10_STATUS IS NULL OR status = :P10_STATUS);
Cause 2: VPD or Row-Level Security
If the database uses Virtual Private Database (VPD) policies, the APEX session’s user context may differ from your SQL Developer session. VPD silently filters out rows based on the session context. Check that the APEX parsing schema has the same VPD context as your test session. Query SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') from both sessions to compare.
Cause 3: Wrong Parsing Schema
The APEX application’s parsing schema might not have SELECT privileges on the table, or might be pointing to a different schema where the table is empty. Check the application’s Parsing Schema in Shared Components, then Application Definition. Ensure the schema owns or has grants on the tables in the query.
Cause 4: Pagination Settings
For Interactive Reports, the “Maximum Row Count” setting limits how many rows APEX checks. If set to a low number and the matching rows are beyond that range (due to sorting), the report may show no data. Increase the Maximum Row Count or remove the limit for debugging.
Cause 5: Saved Report Filters
The Interactive Report might have a saved user report with filters that exclude all data. Reset the report by clicking Actions, then Reset, or check if a saved report is active. Developers often forget that the Primary Default report may include filters they set during development.
Debugging Approach
Enable Debug mode and look for the SQL query execution in the debug output. Check the bind variable values shown in the debug log. Copy the query with those exact values into SQL Developer to verify. If it returns data in SQL Developer but not in APEX, the issue is almost certainly session context (different schema, VPD policy, or Multi-Org setting).