วันพุธที่ 22 กรกฎาคม พ.ศ. 2558

Tip:SQL Read File (many Member)

Tip:SQL Read File (many Member)

CREATE ALIAS    QTEMP.myALIAS    FOR     LIB.QRPGSRC (PGM1)
SELECT   QTEMP.myALIAS
DROP ALIAS      QTEMP.myALIAS

File ใน DB2/400  (มีโครงสร้าง พิเศษ) สามารถจัดเก็บ 1 File ได้หลาย Member

ตย. Source Code (เช่น QRPGSRC, QDDSSRC)  ที่เก็บ RPG, Physical,Logical,Display File
ตย. File ที่ IBM มักจะแนะนำให้ใช้  คือ  File Monthly แยก Member ตาม ปี/เดือน เป็นต้น
       (ไม่เหมาะกับ SQL)

คำสั่งมาตรฐาน SELECT  ไม่มี  Syntax ที่ใช้อ้างอิง โครงสร้างพิเศษ ข้างต้น
ต้องสร้าง  object  ที่ระบุ Member เจาะจง   รู้จักกันในชื่อ   ALIAS

ชุดคำสั่งข้างบน ทำให้อ่าน Member ที่เจาะจงได้
(เรียกใช้งานได้ใน iSeries Navigator)

ตย. ใน DotNet : ต้องการสร้าง Class เกี่ยวกับ Database โดยสร้างจาก DB2
       ณ.วันนี้ (2015/07/23)  ยังไม่มีเครื่องมือช่วยสร้าง

       บน DB2        LIB.QDDSSRC  (myFile)  จัดเก็บลักษณะนี้

              R  MYFILER1
                 FLDA        10    COLHDG('FIELD-A')
                 FLDB         8    COLHDG('FIELD-B')
                 ...  
                                  มีประมาณ 30-50 field

       บน  DotNet  ต้องสร้าง  code ลักษณะนี้ (ตย. แบบย่อ)

              Class myFILE
                  Property  FLDA  as  String
                  Property  FLDB  as  String
                  ...

                  Sub GetData  (byVal myID as String)
                      '...SQL to DataTable
                      Loop  Data Table
                           FLDA = dt.FLDA
                           FLDB = dt.FLDB
                           ...
                      End loop
                  End Sub
              End Class

               ถ้าต้องทำ  1-2  File - เปิด Editor แล้ว Copy / Paste  เร็วที่สุด
               แต่ถ้าต้องทำ มากกว่า  5 file แต่ละ File มี Field มาก     ลองสร้าง Tool
               สังเกต  Code สีชมพู  (ที่มีลักษณะแน่นอน)

Code สีชมพูดในส่วนที่ 2 ทำง่ายกว่า ครับ

Select srcdta
      ,substr(srcdta,19,6) || ' = dt.' || substr(srcdta,19,6)
From qtemp.myAlias 
Where substr(srcdta,7,1)<>'*' and substr(srcdta,17,1)=' ' 
  and substr(srcdta,19,6)<>'      '

SQL Result
     A            MXOPEC         2          COLHDG('OPEC CODE')                  MXOPEC = dt.MXOPEC
  ++ A            MXCOMC         1          COLHDG('COMC CODE')                  MXCOMC = dt.MXCOMC

Code สีชมพูดในส่วนที่ 1 เพิ่มรายละเอียด ครับ
Select srcdta
      ,' Property ' || substr(srcdta,19,6)
       || Case Trim(substr(srcdta,36,2)) 
             When '  ' Then ' As String'
             Else ' As Float'  End 
       || ' '' ' 
       || Replace(Replace(Trim(substr(srcdta,44,30)),'COLHDG(''',''),''')','') 
From qtemp.myAlias 
Where substr(srcdta,7,1)<>'*' and substr(srcdta,17,1)=' ' 
  and substr(srcdta,19,6)<>'      '

SQL Result
     A            MXTYCD         5          COLHDG('TYPY CODE')                 Property MXTYCD As String ' TYPE CODE
  C  A            MXTYPE        25          COLHDG('TYPY')                       Property MXTYPE As String ' TYPE
     A            MXWEIT         7  3       COLHDG('WEIGHT')                     Property MXWEIT As Float ' WEIGHT
     A            MXODOW         7  4       COLHDG('O/W')                       Property MXODOW As Float ' O/W

Reference
http://search400.techtarget.com/tip/Using-SQL-on-System-i-to-color-source-code-and-inline-comments

ไม่มีความคิดเห็น:

แสดงความคิดเห็น