Putting Run SQL Scripts to Work for You



Similar documents
2 SQL in iseries Navigator

MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC

MyOra 3.5. User Guide. SQL Tool for Oracle. Kris Murthy

Tips and Tricks SAGE ACCPAC INTELLIGENCE

Getting Started Guide

Microsoft PowerPoint 2010

Working with SQL Server Integration Services

Version 4.1 USER S MANUAL Technical Support (800)

Microsoft Office Access 2007 which I refer to as Access throughout this book

Module One: Getting Started Opening Outlook Setting Up Outlook for the First Time Understanding the Interface...

SonicWALL GMS Custom Reports

Abstract. For notes detailing the changes in each release, see the MySQL for Excel Release Notes. For legal information, see the Legal Notices.

Finance Reporting. Millennium FAST. User Guide Version 4.0. Memorial University of Newfoundland. September 2013

Business Insight Report Authoring Getting Started Guide

BIGPOND ONLINE STORAGE USER GUIDE Issue August 2005

Business Objects Version 5 : Introduction

Fleet Maintenance Software

Using Microsoft Word. Working With Objects

Toad for Data Analysts, Tips n Tricks

SECTION 5: Finalizing Your Workbook

Business Portal for Microsoft Dynamics GP User s Guide Release 5.1

Toad for Oracle 8.6 SQL Tuning

TAMUS Terminal Server Setup BPP SQL/Alva

ACCESS Importing and Exporting Data Files. Information Technology. MS Access 2007 Users Guide. IT Training & Development (818)

Content Author's Reference and Cookbook

Microsoft Word 2011: Create a Table of Contents

MAS 500 Intelligence Tips and Tricks Booklet Vol. 1

Using the Query Analyzer

FileMaker 14. ODBC and JDBC Guide

NDA ISSUE 1 STOCK # CallCenterWorX-Enterprise IMX MAT Quick Reference Guide MAY, NEC America, Inc.

Word basics. Before you begin. What you'll learn. Requirements. Estimated time to complete:

Microsoft Query, the helper application included with Microsoft Office, allows

Introduction to Microsoft Access 2013

Scribe Demonstration Script Web Leads to Dynamics CRM. October 4,

Asset Track Getting Started Guide. An Introduction to Asset Track

SQL Server 2005: SQL Query Tuning

Appointment Scheduler

Web Intelligence User Guide

PowerPoint 2013: Basic Skills

Adobe Acrobat 6.0 Professional

Adobe Conversion Settings in Word. Section 508: Why comply?

Hypercosm. Studio.

How To Use Query Console

Getting Started Guide

IBM Rational Developer for i. Maintain an ILE RPG application using Remote System Explorer Edit, Compile, and Debug

Introduction to Microsoft Access 2003

MobiLink Synchronization with Microsoft SQL Server and Adaptive Server Anywhere in 30 Minutes

Rochester Institute of Technology. Oracle Training: Preparing Journal Entries in the Oracle Applications

Kurz MODBUS Client User s Guide

Users Guide. FTP/400 File Transfer API and Remote Command Server Version By RJS Software Systems, Inc.

Microsoft Office. Mail Merge in Microsoft Word

Setting Up ALERE with Client/Server Data

Producing Listings and Reports Using SAS and Crystal Reports Krishna (Balakrishna) Dandamudi, PharmaNet - SPS, Kennett Square, PA

BID2WIN Workshop. Advanced Report Writing

Outlook . User Guide IS TRAINING CENTER. 833 Chestnut St, Suite 600. Philadelphia, PA

Rapid Assessment Key User Manual

Writer Guide. Chapter 15 Using Forms in Writer

Results CRM 2012 User Manual

Teradata SQL Assistant Version 13.0 (.Net) Enhancements and Differences. Mike Dempsey

CHAPTER 6: SEARCHING AN ONLINE DATABASE

Microsoft Access Basics

BulkSMS Text Messenger Product Manual

Release 2.1 of SAS Add-In for Microsoft Office Bringing Microsoft PowerPoint into the Mix ABSTRACT INTRODUCTION Data Access

Simply Accounting Intelligence Tips and Tricks Booklet Vol. 1

FileMaker 11. ODBC and JDBC Guide

Windows XP Pro: Basics 1

FileMaker 13. ODBC and JDBC Guide

1-Step Appraisals Jewelry Appraisal Software

ORACLE BUSINESS INTELLIGENCE WORKSHOP

CowCalf5. for Dummies. Quick Reference. D ate: 3/26 /

Introduction To Microsoft Office PowerPoint Bob Booth July 2008 AP-PPT5

Access Tutorial 3 Maintaining and Querying a Database. Microsoft Office 2013 Enhanced

Rational Developer for IBM i (RDI) Distance Learning hands-on Labs IBM Rational Developer for i. Maintain an ILE RPG application using

Microsoft Access 2010 handout

Ohio University Computer Services Center August, 2002 Crystal Reports Introduction Quick Reference Guide

Tutorial 3 Maintaining and Querying a Database

paragraph(s). The bottom mark is for all following lines in that paragraph. The rectangle below the marks moves both marks at the same time.

Microsoft Migrating to PowerPoint 2010 from PowerPoint 2003

TestManager Administration Guide

MICROSOFT OFFICE ACCESS NEW FEATURES

Visual Studio.NET Database Projects

Evaluator s Guide. PC-Duo Enterprise HelpDesk v5.0. Copyright 2006 Vector Networks Ltd and MetaQuest Software Inc. All rights reserved.

EMC Smarts Network Configuration Manager

MicroStrategy Desktop

EXCEL PIVOT TABLE David Geffen School of Medicine, UCLA Dean s Office Oct 2002

Tabs3, PracticeMaster, and the pinwheel symbol ( trademarks of Software Technology, Inc. Portions copyright Microsoft Corporation

Sage Abra SQL HRMS Reports. User Guide

Chapter 15 Using Forms in Writer

RemoteWare Software Manager

Building Qualtrics Surveys for EFS & ALC Course Evaluations: Step by Step Instructions

Microsoft Dynamics GP SQL Server Reporting Services Guide

Microsoft PowerPoint 2011

Chapter 14: Links. Types of Links. 1 Chapter 14: Links

Creating Interactive PDF Forms

Enterprise Asset Management System

Creating a Web Service using IBM Rational HATS. For IBM System i (5250) Creating a Web Service using HATS 1

Business Portal for Microsoft Dynamics GP. Key Performance Indicators Release 10.0

Handout: Word 2010 Tips and Shortcuts

Decision Support AITS University Administration. Web Intelligence Rich Client 4.1 User Guide

Microsoft Office Access 2007 Basics

Transcription:

RPG & DB2 Summit October 2008 Putting Run SQL Scripts to Work for You Skip Marchesani System i Developer Newton, NJ 07860 Woodbury, VT 05681 smarches@warwick.net www.systemideveloper.com Copyright 2008 System i Developer, LLC Putting Run SQL Scripts to Work for You Disclaimer: This presentation may contain examples of code and names of companies or persons. The code is given for presentation purposes and has not been tested by IBM and/or Skip Marchesani. Therefore IBM and/or Skip Marchesani does not guarantee the reliability, serviceability, or function of the code and the code is provided "AS IS". IBM AND/OR SKIP MARCHESANI EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE AND MERCHANTABILITY. Any names appearing in this presentation are designed to be fictitious and IBM and Skip Marchesani makes no representations as to the accuracy of the names or data presented in accordance therewith. Reproduction: This presentation is the property of Skip Marchesani and System i Developer, LLC. Permission is granted to make a limited number of copies of this material for non-commercial purposes, providing this page is included with all copies. Express written permission is required for making copies for other purposes. Copyright 2008 System i Developer, LLC DB2 Track Putting Run SQL Scripts to Work for You Page 1-2

RPG & DB2 Summit October 2008 V5 SQL Information Sources iseries Information Center Publications - Web or CD SQL Reference SQL Programming Embedded SQL Programming Query Manager Use SQL Messages and Codes To access Info Center on the Web http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp In left scroll bar Click on iseries Information Center... Click on Database Click on Printable PDFs Use right scroll bar to scroll down to above SQL publication DB2 for iseries on the Web http://www.ibm.com/servers/eserver/iseries/db2/ Copyright 2008 System i Developer, LLC DB2 Track Putting Run SQL Scripts to Work for You Page 3-4

My current strategy when teaching SQL related topics is to use what is now called the Run SQL Scripts function also known as the SQL Script Center or Script Center in iseries or System i Navigator, to demonstrate the aspects of SQL that I am teaching and also use it as an aid to answer SQL syntax and function related questions. The Script Center was introduced several years ago in Version 4 of OS/400 and is finally becoming more widely known and used. And now when I teach and use it for demonstrations I am getting more and more questions about how it works. The main reason for the rise in the number of questions is that IBM does not provide a lot of documentation for the Script Center. There is little information available via IBM s System i Information Center web site, and IBM has no softcopy publication available for it. The only place a user can find information is in Help, the content of which is getting better with each release, but can still be a challenge when trying to find an answer to a question. Therefore, based on the questions I get most frequently, here are some of the hidden secrets in Run SQL Scripts. This document is not intended to be a comprehensive overview of Run SQL Scripts Accessing Run SQL Scripts Run SQL Scripts in iseries or System i Navigator is part of the Database function, therefore you must have the Database function (which is optional) installed to use it. You can view Run SQL Scripts in part as the PC replacement for Interactive SQL, which is the green screen interface initiated with the STRSQL command. Run SQL Scripts and Interactive SQL do overlap in function and each can do things that the other cannot. To Access Run SQL Scripts in System i or iseries Navigator Start Navigator System Name Click on the + to expand function list for system where you would like to access Run SQL Scripts Databases Click on the + to view the database name Database name Click the database name to hi-lite it Run SQL Scripts can then be accessed via one of the following three options Second item in the left column of the right task pad (larger of the two) at the bottom of the wondow Right click the database name and selecting Run SQL Scripts in the lower part of the resulting pop up menu Click File in the tool bar and Run SQL Scripts is in the middle of the resulting drop down menu 10/11/08 Copyright 2008 System i Developer, LLC Page 1

System i or iseries Navigator Window 10/11/08 Copyright 2008 System i Developer, LLC Page 2

Run SQL Scripts Window 10/11/08 Copyright 2008 System i Developer, LLC Page 3

Run SQL Scripts Window Components Examples List Box upper right of Run SQL Scripts window Drop down box with several SQL statement and a few CL command (at the end) templates Find desired format, hi-lite, then click Insert to have template inserted into input pane Input Pane - upper portion of the Run SQL Scripts window This area is used to create and/or edit SQL statements and/or CL commands You can create statements manually or select from the Examples list You can also use the Generate SQL function to insert generated SQL at the current cursor position. Note that each statement must be ended or separated by a semicolon Output Pane - lower portion of the Run SQL Scripts window comprised of Messages tab Zero to many Results tabs that display the output or the results set when and SQL SELECT statement is executed A results set for an SQL SELECT statement can be displayed in a separate window more on this later What Can Run SQL Scripts Do? Allow entry, editing and execution of a script that contains One or more SQL statements One or more CL commands A combination of or one or more SQL statements and CL commands A script is a collection of one or more SQL statements and/or CL commands Entering SQL Statements or CL Commands in the Input Pane Each SQL statement or CL command must be ended or separated with a semicolon (;) Use CL: (that is C, L, : and blank ) to preface each CL command to be executed Batch CL commands only DSP (display) commands that direct output to a display/workstation are not allowed Use two dashes (--) as the first two characters to make a single line a comment Use /* followed by a text string, followed by an */ to make a comment longer than a single line Place the cursor in an SQL statement or CL command to select it Object Naming Convention *SQL is default with object naming convention of library.object *SYS is optional with object naming convention of library/object To change: on Tool Bar click on Connection, JDBC Setup, and then Format Tab Text block at top is Naming Convention - choose *SQL or *SYS 10/11/08 Copyright 2008 System i Developer, LLC Page 4

Assisting SQL Statement Creation Examples List Box as outlined above SQL Assist Press F4, or on tool bar click on Edit and then SQL Assist Graphical, point and click interface to create the following four SQL statements Select Insert Update Delete Requires *SQL object naming convention see below for more detail No prompting available ala Interactive SQL the STRSQL command on the green screen Saving and Re-executing Scripts A script is a collection of one or more SQL statements and/or CL commands Once created a script can be stored as a PC file with a.sql extension, on a PC or in the System i IFS V6R1 scripts can be saved in a System i source file The.SQL file containing the script can then reopened by the SQL Script Center by double clicking it Navigator does not need to be opened Can create a desktop shortcut to.sql file Executing Scripts in the SQL Script Center Window Three was to execute a script Selected execute the selected or highlighted statement or statements (the statement where the cursor is currently positioned) From Selected - execute a subset of script starting with currently selected statement and ending with last statement in script All execute the entire script starting with first statement in the script and ending with the last statement in the script How to execute a script Run drop down menu in the tool bar Three hour glass shaped icons one for each options immediately below the tool bar Options for Executing Scripts in the SQL Script Center Window Stop on Error - when chosen and an error occurs, script stops running and statement that resulted in an error remains selected Smart Statement Selection When chosen, 1 or more hi-lited statements are executed in sequence when Selected is the run option If not chosen, the highlighted text is run as a single SQL statement when Selected is the run option When chosen also ensures that complete statements are run even if one or more statements are only partially hi-lited 10/11/08 Copyright 2008 System i Developer, LLC Page 5

Options for Executing Scripts in the SQL Script Center Window - continued Display Results in Separate Window When chosen, results sets from select statements are displayed in a separate window instead of the Output pane. Include Debug Messages in Job Log When chosen, turns on debugging for statements run in the Run SQL Scripts window and query optimizer and other database debugging messages are included in the job log Run Statement on Double-click When chosen, execute SQL statements or CL commands when they are double-clicked DEFER RUN HISTORY When chosen, delays the displaying of SQL or CL messages in output pane until entire script has completed execution Speeds up execution of long scripts Displaying Multiple Results Sets Windows Only one results tab displayed at a time in output pane Need to be able to compare two or more results sets To display two or more results sets in a separate window Click on Options in the tool bar Click on Display Results in a Separate Window If not marked also click on Smart Statement Selection Displaying multiple results set windows Windows for each result set are displayed directly on top of each other Manually reposition and possibly resize to see each window and make visual comparisons Each window must be manually closed to remove from the desktop Library List Library list invoked by user profile for Navigator session in effect for Run SQL Scripts Two ways to change library list Execute CHGLIBL command on input pane On tool bar - click on Connection, JDBC Setup, and then the Server tab SQL Default Library name of library that will be used by Run SQL Scripts Library List library list to be used by Run SQL Scripts If both SQL Default Library and Library List specified, default library search first 10/11/08 Copyright 2008 System i Developer, LLC Page 6

Visual Explain Use to investigate and improve SQL Statement (Query) performance SELECT, UPDATE, INSERT, DELETE Two modes Explain (No Run) Run and Explain Creates a query graph or diagram that graphically displays the execution of SQL statement Will advise Statistics collection Index creation Other Tips for the Run SQL Scripts window Connect to Server Reconnect to current server if connection times out or connect to new server On Tool Bar click on Connection, Connect to Server, then choose or enter server name Change Run SQL Scripts window font in the View menu V6R1 Enhancements Save script to System i source file Check SQL portability Toggle between column headings and column names for results set window Save size and position of separate results set window Change font for results set window Copy results set to spreadsheet Print results set Summary The Run SQL Scripts function aka the SQL Script Center or Script Center is iseries Navigator s or System i Navigator s answer to Interactive SQL on the green screen side of the System i. It is an extremely powerful and flexible tool with lots of function that can have a very positive impact on application developer productivity. Spend some time with the SQL Script Center and play with it. Try the tips outlined in this presentation and explore the many other tool bar options that have not been discussed and you will uncover lots of good things you can do. 10/11/08 Copyright 2008 System i Developer, LLC Page 7

Several years ago when teaching SQL related topics I began using what is now called the Run SQL Scripts function also known as the SQL Script Center or Script Center in iseries or System i Navigator, to demonstrate various SQL functions and also answer SQL syntax and function questions. Now that the SQL Script Center is becoming more widely known and used, when I teach and use it for demonstrations I am getting more and more questions about how it works. One reason for the increasing number of questions is that there is little information available for Run SQL Scripts via IBM s System i Information Center web site, and IBM has no softcopy publication available for it. The only documentation available is Help, which has improved over time, but on occasion can still be a challenge when trying to find an answer to a question. So based on the more frequently asked questions I get while teaching, here are some Script Center tips. Opening Run SQL Scripts In case someone reading this is not familiar with Run SQL Scripts in iseries or System i Navigator, it is part of the Database function, so therefore you must have the Database Function installed to use Run SQL Scripts. It can be said that in part it is the PC based alternative for Interactive SQL (the STRSQL command) on the green screen side of the System i. Run SQL Scripts and Interactive SQL do overlap in function, but each can do things that the other cannot. To open Run SQL Scripts, expand the Database function (click on the + next to Database) and then right click on the database name, which will appear immediately below the Database function. The Run SQL Scripts function then appears near the bottom of the resulting popup menu, it appears as an option in the File drop down menu in the tool bar at the top of the panel, and it appears as an option under Database Tasks in the lower pane at the bottom of the panel. Clicking on any of these three options will open the Run SQL Scripts panel. What can the SQL Script Center Do? The SQL Script Center allows the user to execute a script that contains a single or multiple SQL statements. If the script contains multiple SQL statements, the user has the option of executing the entire script - starting with first statement in the script and ending with the last statement in the script, the currently selected or highlighted statement or statements (the statement where the cursor is currently positioned), or a subset of the script starting with the currently selected statement and ending with the last statement in the script. The drop down menu for Run in the tool bar at the top of the panel shows these options as All, Selected, or From Selected. There is also an icon for each of these options shaped like an hourglass immediately below the tool bar. Executing SQL Statements and CL Commands Did you notice in the previous paragraph that I started out using the words SQL statements and ended by just using the word statement with out prefacing it with SQL? There is a method to my madness. Since this is the SQL Script Center we are discussing, it is obviously going to be able to execute SQL statements. What isn t obvious, and users are delighted to discover, is that it can also execute any Control Language (CL) command that can be executed in a batch program. Therefore to refine my earlier definition, the SQL Script Center allows the user to execute a script that contains a single or multiple SQL statements and/or CL commands. This gives the SQL Script Center significantly enhanced function when compared to that which you can get with the RUNSQLSTM command. 3/3/2009 Copyright 2008 System i Developer, LLC Page 1

An SQL statement or a CL command is entered on the upper portion or the Input pane of the Run SQL Scripts window. SQL statements are entered as is without any prefix and CL commands must be prefaced with CL: (not case sensitive). Each SQL Statement and/or CL command to be executed by the SQL Script Center must be ended with a ; (semi-colon). The nice thing about the SQL Script Center is that once a script has been created (a script is a collection of one or more SQL statements and/or CL commands) it can be stored as a PC file with a.sql extension, on a PC or in the System i IFS. This file that contains the script can then be accessed and reopened by the SQL Script Center at a future date and the SQL statements and/or CL commands in the script re-executed. Changing Font Size for the Input Pane When entering statements in the Input pane, the default font is hard to read when displayed using an LCD projector for teaching purposes, or if your eyes are going through the aging process like mine, may be hard to read on your PC display. Again users are pleasantly surprised to find that they can increase the font type and size for the Input put pane to make it easier to read on their display or when projected for teaching purposes. Just click on View in the tool bar, and then click on Font in the resulting drop down menu. I find that an 18-point font works well when displaying the Input panel using an LCD projector. 3/3/2009 Copyright 2008 System i Developer, LLC Page 2

Viewing Completion Messages and Results Sets The lower portion of the window is the Output pane. There always will be a Messages tab where a completion message is displayed for each SQL statement or CL command that is executed as shown in Figure 01. Figure 01 3/3/2009 Copyright 2008 System i Developer, LLC Page 3

And when a SELECT statement is executed, assuming you are using the defaults for Options in the tool bar, there will be a Results tab that displays the results set for the SELECT statement as Shown in Figure 02. Figure 02 3/3/2009 Copyright 2008 System i Developer, LLC Page 4

Displaying Multiple Results Sets Windows The issue that may users have with the results tab is that it only displays the results set for that last SELECT statement executed, and many times you want to see the results set for a series of SELECT statements so they can be compared. This is very easy to accomplish. Just click on Options in the tool bar and then click on Display Results in a Separate Window to select it, and also make sure that Smart Statement Selection is selected (normally it would be selected since it s the default) as shown in Figure 03. Figure 03 3/3/2009 Copyright 2008 System i Developer, LLC Page 5

Executing Multiple SQL Statements and/or CL Commands The next question is how to execute a series of SELECT statements at the same time. There are a couple of alternatives. You can highlight each SELECT statement to be executed and then click on Run Selected (right most hour glass) in the tool bar, as shown in Figure 04, and the results set for each will be displayed in a separate window. Figure 04 3/3/2009 Copyright 2008 System i Developer, LLC Page 6

The windows for each result set are displayed directly on top of each other so you have to manually reposition and possible resize all displayed windows to be able to see each one and make visual comparisons as shown in Figure 05. The down side of Display Results in a Separate Window is that each open window must be manually closed to remove it from your desktop, however I feel that this is a minor inconvenience compared to the benefit of having multiple results sets displayed at the same time. Figure 05 3/3/2009 Copyright 2008 System i Developer, LLC Page 7

There is another alternative for executing an SQL statement in the Options drop down menu on the tool bar, which eliminates selecting the statement and then selecting the execution option. As shown in Figure 06, select Run Statement on Double-Click from the Options drop down menu, and you can execute any single SQL statement by placing the cursor on the statement and double clicking it with your mouse. This allows you to easily execute a series of SQL statements - one at a time - and if it s a SELECT statement have each results set displayed in a separate window, and you don t have to keep moving the cursor between the statements and the tool bar. Figure 06 Prompting SQL Statement Creation One question that is asked on a very frequent basis is if the SQL Script Center has an SQL statement prompter like the one available with Interactive SQL. The answer is like the Hertz commercial - Not Exactly. However, this Not Exactly is used in a more positive context than the one from the Hertz commercial. Interactive SQL provides a good multilevel SQL prompter that works with a subset of the SQL statements available in DB2. The SQL Script Center does not have this type of SQL prompting. It instead takes a different approach called SQL Assist, which provides an easy to use, graphical approach to creating a SELECT, INSERT, UPDATE, or DELETE statement. These four SQL statements are the ones that are used a very large percentage of the time. To invoke SQL Assist, press F4 with the cursor placed anywhere on the Input panel, or click on Edit from the tool bar and select SQL Assist from the drop down menu. Either option takes you to the primary SQL Assist panel. 3/3/2009 Copyright 2008 System i Developer, LLC Page 8

The libraries available for SQL Assist are those defined under Schemas on the left pane of the Navigator panel. Note that for purposes of this discussion, an SQL Schema can be considered the same as a native library. To add or remove libraries, right click on Schemas on the Navigator panel and click Select Schemas to Display to invoke the Select Schemas dialog. SQL Assist will create the SELECT, INSERT, UPDATE, or DELETE statement using the SQL naming convention (library.object) as opposed to system naming convention (library/object) and will qualify all references in the SQL statement with library and file name. This means that you must choose SQL Naming in Run SQL Scripts in order for the statement created by SQL Assist to execute correctly. To do this, click on Connection in the tool bar of the Run SQL Scripts panel and then JDBC in the resulting drop down menu to invoke the JDBC setup dialog. Next click on the Format tab, and then select SQL(*SQL) under naming convention at the top of the dialog display. 3/3/2009 Copyright 2008 System i Developer, LLC Page 9

To invoke SQL Assist, press F4 with the cursor placed anywhere on the Run SQL Scripts Input panel, or click on Edit in the tool bar and select SQL Assist from the drop down menu. Either option takes you to the primary SQL Assist dialog panel, shown in Figure 07, which is divided into three parts. Figure 07 3/3/2009 Copyright 2008 System i Developer, LLC Page 10

The upper left portion contains the Outline view, which shows a high level representation of the clauses that comprise SQL statement. Clicking on any clause or node in the outline view causes the detailed information for the clause or node to be displayed in the Details area in the upper right portion of the panel as shown in Figure 08. Figure 08 3/3/2009 Copyright 2008 System i Developer, LLC Page 11

Initially the Details area shows the SELECT, INSERT, UPDADTE, and DELETE statements that can be generated along with the connection information. The SELECT statement is the default selection. The Details area is used to graphically add elements to the SQL statement, and changes based on what clause or node you select in the Outline view in the upper left as shown in Figure 09. Figure 09 3/3/2009 Copyright 2008 System i Developer, LLC Page 12

When you select a node in the Outline view and make changes in the Details area as shown in Figure 10, SQL Assist generates code in the SQL Code View area in the lower portion of the panel. The code is syntax-highlighted. In some environments, you can edit the SQL code in the SQL code view. Figure 10 3/3/2009 Copyright 2008 System i Developer, LLC Page 13

Once the SQL statement is to your liking, click OK and the generated SQL statement will be inserted in the Run SQL Scripts window as shown in Figure 11, and the SQL Assist dialog will close. The generated SQL statement can then be executed. Figure 11 3/3/2009 Copyright 2008 System i Developer, LLC Page 14

Visual Explain Visual Explain, is used to investigate and improve query (SQL statement) performance. Visual Explain creates a query graph or diagram that graphically displays the execution of a SELECT, INSERT, UPDATE, or DELETE SQL statement, and is very useful in helping to understanding the execution costs (performance) of a specific query. Visual Explain will also recommend any indexes that can be created to help improve SQL performance. To see how Visual Explain can be used, let s look at executing a very simple SELECT statement using Run SQL Scripts. In example shown in Figure 12, all columns are being selected from the table called NAMES, where the column called LOG number is greater than zero, and the results set is ordered by LOG number in ascending sequence. To run Visual Explain on specific SQL statement, place the cursor on that statement or highlight the statement, and then click on Visual Explain in the tool bar. Figure 12 When you click on Visual Explain, a drop down menu appears with the options Explain, and Run and Explain. If you choose Explain from the drop down menu, query optimization is performed and the query diagram is displayed along with the optimization information without actually running the query. If you choose Run and Explain from the Visual Explain menu, the query is optimized and actually run before the query diagram it is displayed along with any results set. The Run and Explain option may take substantially more time that just the Explain option, but the query diagram and associated information will be more accurate. 3/3/2009 Copyright 2008 System i Developer, LLC Page 15

Initially for this example the Explain option will be selected, which means that optimization will take place, but the query will not be run. After selecting the Explain option there will be a short wait until the Visual Explain window and query diagram in Figure 13 are displayed. Figure 13 The left pane of the Visual Explain window shows the query diagram and the nodes in the diagram, and the right pane shows the detailed information for the highlighted node, which in this case is the Final Select node. There is one node displayed for each step in the query execution process. To highlight a node and display it s associated information, just click on the node in the diagram. If you look at the last line under Time Information in the information panel you will see that the estimated query runtime or execution time is 625.679 milliseconds. 3/3/2009 Copyright 2008 System i Developer, LLC Page 16

If you scroll down to the bottom of the right pane, the last line tells us the query engine used was SQE, as opposed to CQE. This is shown in Figure 14. SQE is the new query engine and optimizer and is the preferred of the two engines. If you look at the query diagram in Figure 14 you will see that the first node is a table scan and the second node is a temporary sorted list. A table scan means that the entire table is being read in arrival sequence starting with row one and ending with the last row in the table. This is a performance scenario that is going to use a maximum of system resources to execute the query. In other words it s not going to perform very well. Figure 14 Past experience with seeing the nodes Table Scan with a Temporary Sorted List tells me that this query is a good candidate to have its performance improved with the creation of an index. The next step is to click on the dancing feet on the right side of the bottom tool bar (Statistics and Index Advisor in Figure 14) to see what indexes if any that Visual Explain is recommending. 3/3/2009 Copyright 2008 System i Developer, LLC Page 17

Click on the dancing feet, and then click on Index Advisor tab in the resulting Statistics and Index Advisor window as shown in Figure 15. Figure 15 The Index Advisor is recommending that a Binary Radix Index (as opposed to an EVI or Encoded Vector Index) be created over the NAMES table. If there is more than one index recommendation in this window, select one and click on CREATE in the lower right corner of the Window. 3/3/2009 Copyright 2008 System i Developer, LLC Page 18

When you click on CREATE, the New Index window is displayed, as shown in Figure 16, along with the detailed attributes of the recommended index. To create the recommended index, enter an index name on the first line in this example the name is Log_Nbr and the click OK on the bottom right of the window to create the index. Figure 16 Once the index is created you are returned to the Index Advisor page to give you the option of creating any additional recommended indexes. In this case there are none, so you can close both the Index Advisor and Visual Explain widows to return to the Run SQL Scripts window. 3/3/2009 Copyright 2008 System i Developer, LLC Page 19

Referring to the Run SQL Scripts window shown in Figure 12, click on Visual Explain in the tool bar and select Explain to run Visual Explain a second time to see the effect that the newly created index has on query performance. The first thing you should note in the new Visual Explain window shown in Figure 17 is that the total estimated run time has dropped from 625 milliseconds down to just 64 milliseconds almost a 10 to 1 improvement in query run time! Figure 17 Next note that the query diagram has changed and that the first three nodes of the initial query diagram shown in Figure 09 have been replaced by an Index Probe and a Table Probe which tells us that the optimizer choose to use an index the second time, instead of doing the table scan the first time that Visual Explain was run. 3/3/2009 Copyright 2008 System i Developer, LLC Page 20

When you Click on the Index Probe node to highlight it as shown in Figure 18, the detailed information and name of the index the optimizer choose to use is displayed. The first line under the heading Index Info tells us that the name of the index used is LOG_NBR. This is the index recommended by the Index Advisor and created in Figure 16. Figure 18 You can verify the actual or real performance improvement by running Visual Explain a third time, and selecting the Run and Explain option. 3/3/2009 Copyright 2008 System i Developer, LLC Page 21

Changing the Library List for Run SQL Scripts One of the most frequently asked questions I get is How do I access or find my tables and views using the Script Center? There are two options for finding or accessing your tables, views, and other database objects from the Script Center. One option is to qualify the object name with the library name in your SQL statement of CL command, and the other option is to use a library list to find or access the desired object. Exactly how the object name is qualified depends on the object naming convention that is being used by the Script Center. Object Naming Convention: The Script center supports the two standard methods of System i object naming convention or object qualification: SQL and System. The default Script Center naming convention is SQL, which means that object names are qualified in the format library.object, and System object naming convention uses the more familiar format of library/object. Most likely you will want to change from SQL to System, which is relatively easy and takes just a couple of steps. If you re comfortable using SQL naming, you don t have to make this change. Figure 19 To change the object naming convention, first click on Connection in the tool bar at the top of the Run SQL Scripts window, then click on JDBC Setup as shown if Figure 19. 3/3/2009 Copyright 2008 System i Developer, LLC Page 22

Figure 20 Next click on the Format Tab on the right side of the resulting JDBC Setup window. Then select System (*SYS) from the Naming Convention drop down at the top for the Format Tab window and then click OK as shown in Figure 20, and you re done. What is the Default Library List: The default library list (and current library) for the Scripts Center is determined by the user profile that the Script Center is running under, which is determined by the System i Navigator signon option selected when the connection to the System i server was created. See your system administrator or System i security officer for more detailed information regarding the signon options. If you want to determine the default Script Center library list, you need to know the Script Center job ID. This can be found by clicking on View on the left side of the tool bar at the top of the Run SQL Scripts window and then Job Log in the resulting drop down. 3/3/2009 Copyright 2008 System i Developer, LLC Page 23

The job ID can be found just underneath the tool bar on the top left side of the Job Log window. Once you have the job ID, use the WRKACTJOB command in the green screen interface or the Work Management function (if available to you) in System i Navigator to determine the default library list. Changing the Library List: The Scripts Center allows you to change or customize its current library and/or library list. To change either, click on Connection in the tool bar at the top of the Run SQL Scripts window, then click on JDBC Setup as shown in Figure 19 previously discussed above. Figure 21 Next click on the Server Tab (should be the default tab) on the left side of the resulting JDBC Setup window, and at top left you should see a text entry box for SQL Default Library and immediately below that one for Library List as shown in Figure 21. 3/3/2009 Copyright 2008 System i Developer, LLC Page 24

Figure 22 The SQL Default Library is the library or schema name (schema is the SQL term for library) that will be used to locate unqualified object names referenced in SQL statements or CL commands. You can think of it as the equivalent of the current library in your library list. If the Script Center object naming convention is System (*SYS) and there is no entry for the SQL Default Library, the default library becomes *LIBL (the library list for the Script Center). If the object naming convention is SQL, the SQL Default Library is the library with the same name as the user profile that the SCRIPT Center is running under, which is determined by the System i Navigator signon option selected when the connection to the System i server was created. See your system administrator or System I security officer for more detailed information regarding the signon options. The SQL Default Library is changed by entering a single library name into the SQL Default Library text box as shown in Figure 22. 3/3/2009 Copyright 2008 System i Developer, LLC Page 25

The Library List text box is used to provide the names of one or more libraries that will be added to the server job's library list, and the default is blank or no library name entries. Library names entered in the Library List text box are be separated by commas or spaces as shown in Figure 04, and libraries can be added to your library list or replace the default list entirely. To replace the list, specify a list of library names. To add to the existing user library list, add *USRLIBL to the list of libraries. All libraries that are listed before *USRLIBL are added to the front of the user library list. All libraries that are listed after *USRLIBL are added to the end of the user library list. Configuring Run SQL Scripts for Ad Hoc Queries Many months ago when I needed to create and execute an ad hoc query using SQL, my tool of choice was Interactive SQL available via the System i green screen interface. I don t recall any dramatic change taking place I suspect it was gradual but these days I find myself using Run SQL Scripts (aka SQL Script Center or Script Center) from System i Navigator instead of Interactive SQL, to execute an ad hoc SQL Query. The Script Center offers a couple of advantages over Interactive SQL. Specifically the Script Center allows you to intermix and execute SQL statements and batch CL commands, store one or more SQL statements and/or batch CL commands as a script for later retrieval and execution, include text or comments for documentation (not that us programmers would ever need to document anything), and display multiple result sets from the execution of multiple SQL SELECT statements. One thing the Script Center cannot do that Interactive SQL can do, is multi-level prompting for SQL statements. However, these days I m pretty comfortable with SQL syntax and don t need to lean on SQL statement prompting as much as I used to. One frustration that I hear is that the script center is not the best tool for ad hoc SQL queries. My answer to that is if you attempt to create and execute ad hoc SQL queries with the Script Center using the default configuration or setup options, you may find yourself frustrated just like I was when I first started to use it. The good news is it s fairly easy to tweak the default options and optimize the Script Center for ad hoc SQL Queries. 3/3/2009 Copyright 2008 System i Developer, LLC Page 26

Figure 23 Viewing Completion Messages and Results Sets Before we discuss any tweaking, let s take a quick look at the Output Pane in the lower portion of the Run SQL Scripts window. The Output pane will always have a Messages tab where a completion message is displayed for each SQL statement or CL command that is executed. And when a SELECT statement is executed with the default options, there will also be a tab to the right of the Messages tab that displays the results set for the SELECT statement as shown if Figure 23. 3/3/2009 Copyright 2008 System i Developer, LLC Page 27

Choosing the Correct Options The results tab does not lend itself to ad hoc SQL queries with complex results sets and is limited in function. If you want to do ad hoc SQL queries, and execute multiple SQL statements and/or batch CL commands and display multiple result sets, you need to tweak the Script Center by changing the Script Center run time options. Figure 24 To make any changes, click on Options in the tool bar and then click on/select Display Results in a Separate Window and Run Statements on Double Click. Also make sure that Stop on Error and Smart Statement Selection are selected, as shown in Figure 24. Normally they would be selected since they are the default. With these options selected, multiple SELECT statements (and/or multiple batch CL commands) can be executed and the results set for SELECT statements will be displayed in a separate window. A detailed discussion along with examples for Displaying Multiple Results Sets in Run SQL Scripts can be found earlier in this article. 3/3/2009 Copyright 2008 System i Developer, LLC Page 28

Make It Easy On Your Eyes The next tweak is optional, but if you re like me and find your eyes are aging along with the rest of your body, you may want to increase the font size of text displayed in the Run SQL Scripts window. To change the font size, click on View in the tool bar at the top left of the Run SQL Scripts window and then click on Font. Figure 25 Next select the desired font and size from the resulting Font popup window, as shown in Figure 25. Note that the default font and size is Tahoma 12, and the font and size used in the figures for this article is Tahoma 18. It s also worth noting that in V5R4 a font change only affects the text in the Run SQL Scripts window, while in V6R1 a font change affects both the text in the Run SQL Scripts window and the information displayed in the result set window. 3/3/2009 Copyright 2008 System i Developer, LLC Page 29

Changing JDBC Setup Connection Options The final tweaks that you may want to make for ad hoc SQL queries are to set up your default SQL library and library list, select either SQL or System object naming convention, and make sure the displayed information in your result set is translated correctly. Figure 26 These options are changed in the JDBC Setup window which is displayed by clicking on Connection in the tool bar and then JDBC Setup in the drop down, as shown in Figure 26. 3/3/2009 Copyright 2008 System i Developer, LLC Page 30

Figure 27 When the JDBC Setup window opens, by default the Server tab is displayed as shown in Figure 27. The Server tab allows you to specify an SQL Default Library (current library for Script Center) and library list to be used for the execution of any SQL statement or batch CL command. 3/3/2009 Copyright 2008 System i Developer, LLC Page 31

Figure 28 To select the object naming convention for the Script Center, click on the Format tab in the JDBC Setup window. Naming Convention is at the top left and SQL (library.object) or System (library/object) can be selected as shown in Figure 28. Most likely you will select System unless your creating SQL statements to be used on database platforms other than DB2 for System i. A detailed discussion along with examples for SQL Default Library, Library List, and object Naming Convention can be found earlier in this article. 3/3/2009 Copyright 2008 System i Developer, LLC Page 32

There s Hexadecimal Data In My Result Set! Have you ever run an SQL query and wound up with hexadecimal data in the result set? The first time it happened to me, I wanted to know why it happened and how I could fix it. To make along story short, this can occur when you derive or create a new column on the fly in your SELECT statement, that new column is a combination of data from one or more character and numeric columns, and as a result of combining the data it s not translated correctly when displayed on your PC. It s easy to fix. Figure 29 To correctly translate the combined character and numeric data, click on the Translation tab in the JDBC Setup window, then select Translate CCSID 65535, as shown in Figure 29. Selecting this option will ensure that the correct code page is used to translate the data when it s displayed on your PC. 3/3/2009 Copyright 2008 System i Developer, LLC Page 33

V6R1 Enhancements Among the many enhancements that V6R1 provided for System i and i5/os are several for Run SQL Scripts, which improve its function and broaden its usability. Run SQL Scripts is part of the Database function in System i Navigator. Save Script to System i Source file Prior to V6R1, scripts for Run SQL Scripts (aka SQL Script Center) could only be saved as a PC file with a.sql extension, either on a PC or on the System i IFS. Starting with V6R1, these script files can now be saved on the System i as a member in System i source file. These means that SQL scripts that contain database definitions and are used create one or more database objects can now be stored in a source file like QDDSSRC along with the rest of the source members that contain database definitions. To save to a source file click on File in the tool bar and you will be prompted with the various save options. The following while not a Run SQL Scripts enhancement is related and important to mention. V6R1 now allows the SQL Statement Processor (RUNSQLSTM command) to execute a Run SQL Scripts script (as long as it does not contain a SELECT statement), which includes one or more CL commands. That script can be stored as a PC file on a PC or the IFS, or as a System i Source file. This provides greater flexibility in designing, writing, and executing SQL scripts. Toggle Between Column Headings and Column Names for Result Set Window Prior to V6R1 the headings for the columns in the result set window used the column name as the column heading. If a database table also had column headings defined that were more meaningful than the column name, they could not be displayed. V6R1 provides the capability to toggle back and forth between the two where both are available. To toggle back and forth between the two, click on Connection in the tool bar and then JDBC Settings, and then the Other tab in the resulting window to see the column heading options for the result set window. Check SQL Portability There are times when you will write an SQL script that will have to be executed on the System i and other relational DB platforms such as Oracle, Sequel Server, or my SQL. When writing a script of this nature, it must conform to the ANSI standard so that it will be portable to the other relational DB platforms. In V6R1 Run SQL Scripts gives you the capability to compare the current SQL script to the ANSI standard to check for portability to the other relational DB platforms. To enable this function, click on Options in the tool bar and then select Check SQL Portability in the resulting drop down menu. Change Font Size for Result Set Window For those of us with aging eyes the default font size of the SQL script window and the result set window can be a challenge to read. Back in a previous V5 release we received the capability to change the font size for the SQL script window. Now V6R1 provides the capability to increase the font size for the both the SQL script window and result set window. Just click on View in the toolbar to change font size for both. Not only does this help those of us with the aging eyes, it enhances Run SQL Scripts as a tool to teach and demo SQL statements and functions. Improved Result Set Output Options Prior to V6R1 the only output option for Run SQL Scripts was to display the result set. Without playing games, there was no way to have the output go directly to a spreadsheet file, or direct the result set to a printer. V6R1 provides this capability, which makes it much easier to use Run SQL Scripts to retrieve information from a System i database in the output format required 3/3/2009 Copyright 2008 System i Developer, LLC Page 34

display, printed report, or spreadsheet format (or CSV or text). To enable result set output options, click on Options in the tool bar and select Allow Save Results. Run an SQL SELECT statement and right click on the result set window for the print option or to show the Save Results dialog. The Run SQL Scripts function aka the SQL Script Center or Script Center is iseries Navigator s or System i Navigator s alternative to Interactive SQL on the green screen side of the System i. It is an extremely powerful and flexible tool with lots of function that can have a very positive impact on application developer productivity. However, finding out all the neat things it can do can be a challenge since the only documentation is in the Help. Spend some time with the SQL Script Center and play with it. Try the tips that I ve outlined in this article and explore the many other tool bar options that I have not discussed and you will uncover lots of good things you can do it. If you find something exciting and interesting that I ve not discussed tell me about it in an email note and maybe I ll include it in my next article. 3/3/2009 Copyright 2008 System i Developer, LLC Page 35