constructQuery()
sqlLib.constructQuery()를 사용하여 비교 연산자와 값을 포함하는 사전을 기반으로 하는 SQL 조건을 리턴할 수 있습니다(WHERE 문에서 사용됨).
구문
sqlLib.constructQuery(
sqlRecord Record inOut,
dictionary Dictionary inOut,
matchByName BOOLEAN in )
returns (condition STRING)
- sqlRecord
- 각 레코드 필드 및 연관된 데이터 유형에 해당하는 SQL 열 이름을 제공합니다.
- dictionary
- 이름-값 쌍을 포함합니다. 여기서 이름은 sqlRecord 요소의 이름과 일치합니다. 값에는 연산자와 비교 값이 포함됩니다.
- matchByName
- matchByName이 YES로 설정되면 사전 이름은 sqlRecord 요소 이름과 일치되며 조회가 생성됩니다. matchByName이 NO로 설정되면 사전의 첫 번째 요소가 레코드의 첫 번째 요소로 사용되는 식으로 수행됩니다. EGL은 요소 수의 불일치를 무시합니다.
- condition
- STRING 변수에 이것을 지정하고 WHERE 절에서 사용하십시오. 자세한 정보는 이 주제의 "예제"를 참조하십시오.
예제
다음 샘플 프로그램은 고객 레코드와 사전으로부터 조건 문자열(myCondition)을 작성합니다.
package com.companyb.gl;
record CustomerRecord type SQLRecord
{tableNames = [["ADMINISTRATOR.CUSTOMER", "L1"]],
keyItems = [customerNumber]}
customerNumber STRING {column="C_NUMBER", maxLen=6};
customerName STRING {column="C_NAME", isSQLNullable=yes, maxLen=25};
customerAddr1 STRING {column="C_ADDR1", isSQLNullable=yes, maxLen=25};
customerAddr2 STRING {column="C_ADDR2", isSQLNullable=yes, maxLen=25};
customerAddr3 STRING {column="C_ADDR3", isSQLNullable=yes, maxLen=25};
customerBalance MONEY {column="C_BALANCE", isSQLNullable=yes};
end
program calc3
myDictionary Dictionary {};
myCustomer CustomerRecord;
myCondition STRING;
function main()
myDictionary.customerNumber = ">A20045";
myDictionary.customerBalance = "!= 0";
myCondition = sqlLib.constructQuery(myCustomer, myDictionary, YES);
prepare stmtID from "SELECT * FROM customer WHERE " + myCondition;
get customerArray with stmtID;
end // main
end // program
myCondition의 컨텐츠는 "C_NUMBER > 'A20045' AND C_BALANCE <> 0"입니다.