IBMi (AS400) fans only : A simple way to create table with Rpg Free & SQL embedded

Example of RPG-free language

#IBMiSample

Compile and Run this SQLRPGLE to create table CLANA00F, index CLANA01L and table OTORD00F, and populate:

      **free
      *****************************
      * create CLANA00F & OTORD00F
      *****************************
       ctl-opt option(*nodebugio) dftactgrp(*no) actgrp(*new);
        // The EXEC SQL is never executed. It is used at compile time.
        exec sql Set Option Commit = *None;
        // Create File
        exec sql
          CREATE or REPLACE TABLE myLib/CLANA00F (
          CLANN0 CHARACTER(01) NOT NULL WITH DEFAULT,
          CLCCL0 NUMERIC(7, 0) GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
          CLCIB0 CHARACTER(03) NOT NULL WITH DEFAULT,
          CLNOM0 CHARACTER(50) NOT NULL WITH DEFAULT
          )
          RCDFMT CLANA
          ;
        // Create index
        exec sql
          CREATE INDEX myLib/CLANA01L ON myLib/CLANA00F (CLCCL0 ASC);
        // Fill values
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES ('EN ','Rod Stewart');
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES ('EN ','Bobby McFerrin');
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES ('IT ','Adriano Celentano');
        exec sql
          INSERT INTO CLANA00F (CLCIB0, CLNOM0)
          VALUES ('IT ','Vasco Rossi');
        // Create file
        exec sql
          CREATE or REPLACE TABLE myLib/OTORD00F (
          OTANN0 CHARACTER(01) NOT NULL WITH DEFAULT,
          OTCOR0 NUMERIC(7, 0) GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
          OTTIP0 CHARACTER(02) NOT NULL WITH DEFAULT,
          OTCCL0 NUMERIC(7, 0) NOT NULL WITH DEFAULT,
          OTDTA0 NUMERIC(6, 0) NOT NULL WITH DEFAULT,
          OTDTP0 NUMERIC(6, 0) NOT NULL WITH DEFAULT,
          OTCCM0 CHARACTER(06) NOT NULL WITH DEFAULT
          )
          RCDFMT OTORD
          ;
        // Fill values
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( '10', 1 , 190108 , 190114 , '101  ' );
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( '10', 2 , 190108 , 190112 , '103  ');
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( '10', 3 , 190112 , 190116 , '102  ');
        exec sql
          INSERT INTO OTORD00F (OTTIP0,OTCCL0,OTDTA0,OTDTP0,OTCCM0)
          VALUES ( '10', 4 , 190108 , 190121 , '102  ');
        *inlr = *on;





 
I appreciate all the comments made on this blog.

Comments

  1. Why do you not just put this code in a source member and use RUNSQLSTM?

    ReplyDelete
  2. https://rpgfreeibm.blogspot.com/2021/08/runsqlstm-run-sql-scripts-example.html

    ReplyDelete
  3. Hey Aldo, I used your idea to create a UDF from a RPG program with embedded SQL and I was able to get around a change management tool that did not allow to create UDFs. It worked great.

    ReplyDelete

Post a Comment

Popular posts from this blog

(IBM i fans only) Efficient WRKSPLF with WSF - How to Search string into spooled files, Sort, and Generate PDFs on IBMi

(IBM i fans only) Detecting and Handling Non-Printable Characters in DB2 SQL Using LOCATE() and REPLACE() Functions

(IBM i fans only) How to Sniff User Access