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"입니다.