Query Oracle in plain English
Connect your database, type the question, get the answer. ByeSQL writes Oracle SQL against your real schema, runs it read-only, and gives you a table, a chart or a dashboard panel. No client libraries to install.
Generated as Oracle SQL, not as generic SQL
Oracle differs from the engines a model has seen most, and the differences are the kind that break a query outright.
LIMIT 10, which Oracle does not accept- Date handling borrowed from another dialect
- A row cap that never actually applies
- An error if you are lucky, wrong rows if you are not
FETCH FIRST n ROWS ONLY, appended or lowered as needed- A dialect name passed to the model, so it targets Oracle from the start
- The cap enforced before the statement is sent
- A single read, never more than one statement
It works from your real schema
The most common failure of a general-purpose model writing SQL is inventing a table or a column. ByeSQL sends your actual schema as context with every prompt, so there is nothing to guess.
Tables and views
Both are read, so a question can be answered from a view you already built for reporting.
Columns and types
Names and data types, so dates are filtered as dates and numbers are aggregated as numbers.
Keys and relationships
Primary keys, foreign keys and unique indexes, so a generated join follows the relationships that actually exist.
Your schema is cached when you connect. After a change, hit Refresh on the connection to re-read it.
The connection we recommend
In Oracle a user and a schema are the same thing, so the account you create owns nothing and only reads.
CREATE USER byesql_reader IDENTIFIED BY "a-strong-password";
GRANT CREATE SESSION TO byesql_reader;
-- Grant SELECT on the objects you want queried
GRANT SELECT ON app_owner.ORDERS TO byesql_reader;
GRANT SELECT ON app_owner.CUSTOMERS TO byesql_reader;Granting per object is the scoped approach and the one we would pick. READ ANY TABLE is simpler but reaches every schema on the instance, which is almost never what you want.
Running SQL Server too?
Connect them both and switch between them in the same workspace. Six engines are supported today.
Oracle questions
Do I need the Oracle Instant Client installed?
No. The desktop app uses the Oracle driver in thin mode, which speaks the protocol directly, and the web app connects over JDBC. There is nothing to install on your machine and nothing to deploy into the database.
Oracle has no LIMIT. How is the row cap enforced?
With FETCH FIRST n ROWS ONLY, which is the Oracle equivalent. If the generated query already carries that clause, the number is lowered when it exceeds the maximum; otherwise the clause is appended. The cap is 200 rows by default and 5,000 at most.
In Oracle a user is a schema. Does that change the setup?
It changes what you are granting. The read-only account you create owns no objects of its own; it is granted SELECT on the schema that holds the tables you want queried. That makes scoping straightforward: grant on the objects you want visible and nothing else.
Can it write to my database?
No. A statement only passes if it begins with SELECT or WITH, and it is rejected if any of nine write keywords appears anywhere in it, before the SQL reaches Oracle. Combined with an account that only holds SELECT privileges, both layers would have to fail for a write to happen.
Ask your Oracle database a question
Free plan, no credit card. Read-only by default, so production is a safe place to start.