ExecuteSQL

page d'accueil
Boite à outils

Cette page a été mise à jour le 17 septembre 2009
Contact

Welcome page
Tools box

see also

Faire ce que l'on veut sur des données depuis un programme CL, c'est un sujet de discussion récurrent sur les forums.
Cet outil couvre le besoin, et complète les différents outils SQL disponibles sur le iSeries :

STRQMQRY 

  • impose de créer un objet 
  • permet le paramétrage 
  • un paramètre est limité à 55 caractères 
  • un paramètre ne peut pas être dans une constante (entre quotes) 
  • permet d'executer plusieurs SQL séparés par un ; (point-virgule) 

RUNSQLSTM 

  • pas de création d'objet 
  • pas de paramétrage 
  • permet d'executer plusieurs SQL séparés par un ; (point-virgule) 
  • impose de connaître au moment de l'exécution la bibliothèque, le fichier et le membre où est la pile de commandes SQL. 
  • produit un spoule 

EXECSQL 

  • pas de création d'objet 
  • paramétrage sophistiqué 
  • permet d'executer plusieurs SQL séparés par un ; (point-virgule) ou une commande d'exécution 
  • impose de connaître au moment de l'exécution le fichier et le membre où est la pile de commandes SQL. 
  • produit un spoule, si on le demande 

EXECUTESQL 

  • pas de création d'objet 
  • la commande SQL est construite dans le CL appelant 
  • permet d'executer une seule commande SQL 

exemple d'utilisation : 

To change any data from a CL program, it is a recurrent discussion topic on the forums.
This tool covers the question, and complete the different SQL tools available on the iSeries:

STRQMQRY

  • impose to create an object 
  • permits the parameters 
  • a parameter is limited to 55 characters 
  • a parameter cannot be in a constant (between quotes) 
  • permits to execute several SQLS separated by one; (semicolon) 

RUNSQLSTM 

  • no creation of object 
  • no parameter 
  • permits to execute several SQLS separated by one; (semicolon) 
  • impose to know at the execution time the library, the file and the member where are the SQL stack. 
  • produces a spoule 

EXECSQL 

  • no creation of object 
  • sophisticated parameters 
  • permits to execute several SQLS separated by one; (semicolon)  or a run command
  • impose to know at the execution time  the file and the member where are the  SQL stack. 
  • produces a spoule, if asked 

EXECUTESQL 

  • no creation of object 
  • the SQL order is build in the calling CL 
  • permits to execute only one SQL order 

example of use: 


EXECUTESQL SQL('CREATE TABLE QTEMP/TENLIBS AS (
SELECT DIOBLI, DIOBNM, DIOBTP, DIOBAT, DIOBTX, DIOBSZ
FROM QUSRSYS/QAEZDISK WHERE DIOBTP = ''LIB'' FETCH FIRST 10 ROWS ONLY) WITH DATA')

Techniquement, EXECUTESQL est basé sur 2 lignes de RPG + le papier cadeau. 
C+ prepare somesql from : mySQL
C+ execute somesql

l'objectif de cet outil est d'exécuter à la volée dans un CL une commande SQL quand il n'est pas utile de sortir la grosse artillerie. 

Technically, EXECUTESQL is based on 2 lines of RPG + the giftpaper:
C+ prepare somesql from : mySQL
C+ execute somesql

the objective of this tool is to execute on the flight in one CL a SQL order when it is not useful to take the thick artillery. 
ce que l'on ne peut pas faire :
  • sortie vers l'écran
  • sortie vers un spoule

Pour cela, utiliser RUNQRY, ou Create table as (select ... )

SQL trucs

What can not be done :
  • output to screen
  • output to spool

For this, uses RUNQRY, or Create table as (select ... )

SQL tips


Versionning 

last version : How to upload to my 400

CHGPFM FILE(jpltools) MBR(EXECUTESQL) SRCTYPE(CMD ) EXPDATE(*NONE) SHARE(*NO) TEXT('Exécuter une commande SQL ') 
CHGPFM FILE(jpltools) MBR(EXECUTESQR) SRCTYPE(SQLRPGLE ) EXPDATE(*NONE) SHARE(*NO) TEXT('Exécuter une commande SQL ')
CRTCMD CMD(EXECUTESQL) PGM(*LIBL/executesqr) SRCFILE(jpltools) SRCMBR(EXECUTESQL) REPLACE(*YES)
CRTSQLRPGI OBJ(EXECUTESQR) SRCFILE(jpltools) COMMIT(*NONE) OBJTYPE(*MODULE) OPTION(*NOSEQSRC *XREF *SECLVL) TGTRLS(*PRV) CLOSQLCSR(*ENDMOD) DBGVIEW(*SOURCE) COMPILEOPT('enbpfrcol(*full)')
CRTPGM PGM(EXECUTESQR) BNDDIR(QC2LE) ACTGRP(JPLTOOLS) OPTION(*DUPPROC *DUPVAR) TGTRLS(*prv)

The source code is provided as an open source tool under the GNU General Public License, version 2.  In summary, this license specifies:

By clicking the download link you acknowledge and agree to the terms of the license.

Download the (zipped) SAVF containing the JPLTOOLS : the source file, the message file, the bnddir

THIS TOOLBOX IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROVIDER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS TOOLBOX, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.