Page History
[ |../../index.htm#lansa/select_sql_e.htm]
現在地:
...
7.109.3 SELECT_SQL の使用例
| Anchor | ||||
|---|---|---|---|---|
|
以下の例は、SELECT_SQLコマンドでDISTINCTオプションを指定して、重複したフィールド値を排除する方法を示しています。また、追加オプションを指定しない標準のSELECT_SQLコマンドの使用方法も示します。 SQLコマンドの使用方法も示します。
DEF_
...
LIST NAME(#EMPBROWSE)
...
FIELDS(#NDSTEMPNO #DSTEMPNO)
DEFINE FIELD(#HEADING1)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#NDSTEMPNO)
...
REFFLD(#EMPNO)
...
COLHDG('
...
Employee number'
...
'
...
Not Distinct')
...
DEFINE FIELD(#DSTEMPNO)
...
REFFLD(#EMPNO)
...
COLHDG('
...
Employee Number'
...
'Distinct')
...
DEFINE FIELD(#ENTRYNO)
...
TYPE(*DEC)
...
LENGTH(5)
...
DECIMALS(0)
...
DESC('
...
List entry counter')
CHANGE FIELD(#HEADING1)
...
TO('''
...
This function uses SELECT_SQL from PSLSKL.''')
...
BEGIN_LOOP
EXECUTE SUBROUTINE(NOTDISTINC)
EXECUTE SUBROUTINE(DISTINCT)
DISPLAY FIELDS(#HEADING1) DESIGN(*DOWN)
...
IDENTIFY(*NOID)
...
BROWSELIST(#EMPBROWSE)
...
END_LOOP
SUBROUTINE NAME(NOTDISTINC)
CLR_
...
LIST NAMED(#EMPBROWSE)
...
CHANGE FIELD(#DSTEMPNO)
...
TO(*NULL)
SELECT_
...
SQL FIELDS(#EMPNO)
...
FROM_FILES((PSLSKL))
...
CHANGE FIELD(#NDSTEMPNO)
...
TO(#EMPNO)
ADD_
...
ENTRY TO_LIST(#EMPBROWSE)
...
ENDSELECT
ENDROUTINE
SUBROUTINE NAME(DISTINCT)
CHANGE FIELD(#ENTRYNO) TO(1)
SELECT_SQL FIELDS(#EMPNO) FROM_FILES((PSLSKL))
...
DISTINCT(*YES)
GET_
...
ENTRY NUMBER(#ENTRYNO)
...
FROM_LIST(#EMPBROWSE)
...
CHANGE FIELD(#DSTEMPNO)
...
TO(#EMPNO)
UPD_
...
ENTRY IN_LIST(#EMPBROWSE)
...
CHANGE FIELD(#ENTRYNO)
...
TO('
...
#ENTRYNO +
...
1')
ENDSELECT
ENDROUTINE
| Anchor | ||||
|---|---|---|---|---|
|
以下の例は、SELECT_SQLコマンドで取得した日付に対して計算を実行する方法を示しています。 SQLコマンドで取得した日付に対して計算を実行する方法を示しています。
DEF_
...
LIST NAME(#EMPBROWSE)
...
FIELDS(#SURNAME #SALARY #STD_AMNT)
...
DEFINE FIELD(#HEADING1)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING2)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING3)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
OVERRIDE FIELD(#STD_AMNT)
...
COLHDG('
...
Salary + 10%')
CHANGE FIELD(#HEADING1)
...
TO('''
...
This function uses SELECT_SQL from PSLMST.''')
...
CHANGE FIELD(#HEADING2)
...
TO('''
...
This shows a list of employee surnames and salaries and the salary + 10%.''')
...
CHANGE FIELD(#HEADING3)
...
TO('''
...
This can be done with one SELECT_SQL statement.''')
...
BEGIN_LOOP
CLR_LIST NAMED(#EMPBROWSE)
SELECT_SQL FIELDS(#SURNAME #SALARY (#STD_AMNT 'SALARY * 1.10'))
...
FROM_FILES((PSLMST))
ADD_
...
ENTRY TO_LIST(#EMPBROWSE)
...
ENDSELECT
DISPLAY FIELDS(#HEADING1 #HEADING2 #HEADING3) DESIGN(*DOWN)
...
IDENTIFY(*NOID)
...
BROWSELIST(#EMPBROWSE)
END_
...
LOOP| Anchor | ||||
|---|---|---|---|---|
|
以下の例は、SLECT_SQLコマンドでANDおよびOR演算子を使用して、さらに複雑なクエリーを実行する方法を示しています。 SQLコマンドでANDおよびOR演算子を使用して、さらに複雑なクエリーを実行する方法を示しています。
DEF_
...
LIST NAME(#EMPBROWSE)
...
FIELDS(#EMPNO #ADDRESS2 #SALARY #SURNAME)
DEFINE FIELD(#HEADING1)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING2)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING3)
...
TYPE(*CHAR)
...
LENGTH(79)
...
INPUT_ATR(LC)
...
CHANGE FIELD(#HEADING1)
...
TO('''
...
This function uses SELECT_SQL from PSLMST.''')
...
CHANGE FIELD(#HEADING2)
...
TO('''
...
This lists all employees who either have a salary in the range 10000 to 20000,''')
...
CHANGE FIELD(#HEADING3)
...
TO('''
...
or who live in SEVEN HILLS. This can be done with one SELECT_SQL statement.''')
...
BEGIN_LOOP
CLR_LIST NAMED(#EMPBROWSE)
SELECT_SQL FIELDS(#EMPNO #SURNAME #ADDRESS2 #SALARY) FROM_FILES((PSLMST))
...
WHERE('((
...
SALARY > 10000) AND (SALARY < 20000)) OR (ADDRESS2 = ''SEVEN HILLS.'')')
ADD_
...
ENTRY TO_LIST(#EMPBROWSE)
...
ENDSELECT
DISPLAY FIELDS(#HEADING1 #HEADING2 #HEADING3) DESIGN(*DOWN)
...
IDENTIFY(*NOID)
...
BROWSELIST(#EMPBROWSE)
END_
...
LOOP| Anchor | ||||
|---|---|---|---|---|
|
以下の例は、SELECT_SQLコマンドでBETWEEN演算子を使用する方法を示しています。BETWEEN演算子は、指定された値範囲のデータを取得するためにWHERE句内で使用できます。また、指定された値範囲を除外したデータを取得することもできます。 SQLコマンドでBETWEEN演算子を使用する方法を示しています。BETWEEN演算子は、指定された値範囲のデータを取得するためにWHERE句内で使用できます。また、指定された値範囲を除外したデータを取得することもできます。
DEF_
...
LIST NAME(#EMPBROWSE)
...
FIELDS(#EMPNO #SALARY)
DEFINE FIELD(#HEADING1)
...
TYPE(*CHAR)
...
LENGTH(079)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING2)
...
TYPE(*CHAR)
...
LENGTH(079)
...
INPUT_ATR(LC)
...
DEFINE FIELD(#HEADING3)
...
TYPE(*CHAR)
...
LENGTH(079)
...
INPUT_ATR(LC)
DEF_
...
COND NAME(*AS400)
...
COND('*
...
CPUTYPE =
...
AS400')
...
CHANGE FIELD(#HEADING1)
...
TO('''
...
EXAMPLE 1: Select all employees with a salary between 30,000 and 60,000.''')
...
CHANGE FIELD(#HEADING2)
...
TO(*BLANKS)
...
CHANGE FIELD(#HEADING3)
...
TO('''
...
This can be done with one SELECT_SQL statement.''')
...
BEGIN_LOOP
CHANGE FIELD(#HEADING1)
...
TO('''
...
EXAMPLE 1: Select all employees with a salary between 30,000 and 60,000.''')
CLR_
...
LIST NAMED(#EMPBROWSE)
SELECT_
...
SQL FIELDS(#EMPNO #SALARY) FROM_FILES((PSLMST))
...
WHERE('
...
SALARY BETWEEN 30000 AND 60000')
ADD_
...
ENTRY TO_LIST(#EMPBROWSE)
...
ENDSELECT
EXECUTE SUBROUTINE(DISP)
CHANGE FIELD(#HEADING1) TO('''
...
EXAMPLE 2: Select all employees with a salary outside range 30,000 to 60,000.''')
CLR_
...
LIST NAMED(#EMPBROWSE)
SELECT_
...
SQL FIELDS(#EMPNO #SALARY) FROM_FILES((PSLMST))
...
WHERE('
...
SALARY NOT BETWEEN 30000 AND 60000')
ADD_
...
ENTRY TO_LIST(#EMPBROWSE)
...
ENDSELECT
EXECUTE SUBROUTINE(DISP)
...
END_LOOP
SUBROUTINE NAME(DISP)
DISPLAY FIELDS(#HEADING1 #HEADING2 #HEADING3) DESIGN(*DOWN)
...
IDENTIFY(*NOID)
...
BROWSELIST(#EMPBROWSE)
...
...
ENDROUTINE