The SQL Editor is multi-threaded - it allows you to execute a statement and continue working with Database Workbench. This works for all database engines that support multiple, thread-safe connections. Every instance of the SQL Editor creates an additional connection to your database - if you are running into problems regarding the amount of connections allowed by your server, you can always turn this behaviour OFF via the database engine specific Preferences pages, the option to turn this OFF is available for InterBase and Firebird only.

Statement Editor Behaviour

You can edit multiple statements in the editor window. If you have multiple statements, highlight the statement you want to execute before executing it.

Depending on the option Empty Line is Statement Separator (available via the toolbar Options button), you can also leave an empty line between statements and put the cursor in the statement you'd like to execute.

When you write a colon followed by text (eg: :customerid), you signal the SQL Editor that you're using a parameter in the SQL statement, a value placeholder. See the Query Parameters topic for more information.

If the DBMS you are using supports a "query plan", the tab Plan Analysis holds a Plan Analyzer.

1. File New/Open/Save

With the New, Open and Save buttons, you can clear the current SQL text, load SQL text from a file and save it to a file. The Open button has a drop down menu for recently opened files and the Save button has a drop down so you can choose Save As to enter a new filename.

Mind you, if you use the load & save buttons here, you will only load and save the contents of single SQL page.

Additionally, you can use the drop down of the New button to create a new SQL page, via SQL pages, you can load and save multiple SQL-pages as well.

2. SQL Pages

When you open a SQL Editor, it starts with 1 SQL page, the pages are just below the editor window. You can use SQL pages to enter multiple SQL statements and load/save these statements and the pages to a file. You can add, delete or rename SQL Pages via the buttons on the toolbar (3). A right mouse click on the SQL Pages them self gives you these options too.

When you rename a page, a %d will correspond to a digit. Eg: 'Page %d' will become 'Page 1' (depending on the page number it is). If you add an '&' to the name, it will correspond to a hotkey (the underlined key you can use in combination with the <alt> button as a shortcut).

3. Session Selector & Transaction Control

If you have multiple database sessions, you can use the Session Selector box to change to a different session for the given SQL Editor. This way you can easily run the same SQL statement on multiple database sessions, if you require to do so.

With the transaction buttons you can start, commit and rollback transactions. All actions in the SQL Editor will use the current transaction state, even if you change a value in the result set grid. By default, Database Workbench does not commit anything, you have to do that manually.

If you tick the Autocommit checkbox, all actions (data editing, SQL statements that modify data) will be committed immediately.

Depending on the database engine, the Commit and Rollback button will automatically come enabled as soon as you change data.

Notes:

•MySQL doesn't always support transactions, the "autocommit" checkbox is ON by default.

4. Clipboard, Commenting and Printing

Besides normal Windows Clipboard functionality, the SQL Editor has buttons for Special Copy and Special Paste, just like the main window. This functionality allows you to quickly copy/paste SQL text between Database Workbench and an external development environment.

The Comment Selected Block or Current Line button wraps the block or line with SQL comment markers.

You can print the contents of the editor or selection by using the Print button (ctrl+P).

5. SQL Execution

Executing SQL statements is the main objective for the SQL Editor, you can do this by entering a statement (DML or DDL) and using the buttons in this part of the toolbar or the keyboard shortcuts.

When the SQL statement has parameters, use the Prepare button first so you can enter parameter values to be bound to the parameters. If you use Run Query again, the parameter values will be bound and the statement executed.

If the statement executed is a SELECT statement or otherwise returns a result to the client machine, the results will appear in the result set grid. By using Run and Fetch All, the SQL Editor will execute the statement and fetch all rows into memory and display them in the grid.

When an error occurs during execution of the statement or while preparing the statement, it is displayed in the area marked (8). If possible, the SQL Editor will color the line with the error red.

Some database systems support cancelling a running statement, you can use the red Stop button for that.

There's also a Visual Query Builder button that lets you create an SQL statement visually, it also parses the current statement and displays it.

By using the Create SQL Snippet button, you can quickly add a statement to the SQL Catalog.

•None of the statements executed via the SQL Editor in Database Workbench is auto-commit - you need to commit or rollback the statements yourself, unless you have checked the autocommit checkbox, which is checked by default on MySQL.

•Please note that if you execute DDL statements, the corresponding editors (Table Editor, Index Editor etc) will not reflect the changes made outside the object editors unless you use the Refresh From Database button in the Database Navigator.

6. Result set

If the SQL statement is a SELECT statement or otherwise returns a result set (eg: Microsoft SQL Server CALL to a Stored Procedure), the result set is shown in the grid in the bottom half of the SQL Editor. In general, the result set is "live", meaning that you can edit the data in the result set. However, if the result set comes from multiple tables, it could be the case that some columns can be edited while others cannot. This is a limitation of what can be detected as to which columns can be updated via an SQL statement.

A result set is "server side", that is, data is fetched "on demand" as you request more rows when you scroll down. This goes for all DBMSses that support server side cursors (MySQL, for example, does not). If you choose to enable local sorting, grouping and filtering, all data is pulled to your local machine.

Result set buttons

From left-to-right, the result set buttons have the following meaning:

•go to first row

•go to previous row

•go to next row

•go to last row (fetches all rows into memory)

•insert new row

•delete current row

•refresh result set from database

•close result set

Changes to the data of the result set will not be made permanent unless you commit the transaction, unless autocommit is turned ON. This goes for inserting new rows and deleting rows as well.

Example result set

As you can see in the above example, SQL NULLs will be displayed not just as empty (which could also mean "zero-length character-value"), but rather as "<null>" and in a slightly different color. You can customize the NULL appearance in the Preferences, "Editors - General" section.

If you use the context menu, you can also easily adjust the column width by selecting an item from the Resize Columns sub-menu.

9. Info & errors

The bottom part of the SQL Editor holds information on how fast the statement executed, number of affected or fetched rows etc.

If there's an error in your SQL statement, it's listed here and, if possible, the corresponding line in the editor control is highlighted in a red.

Error in SQL statement

10. Other bottom tabs

At the History tab, the SQL statements executed in this SQL Editor will be displayed so you can easily retrieve a previously entered SQL statement. This history is "project" specific and is persistent across sessions.

The Parameters tab has such a history as well, so you can re-use the parameter values you've entered.