PowerBuilder 버전: 12.5
오류 메시지: Invalid DataWindow row/column specified at line _ in function _ of object _.
DataStore 객체로 조회한 특정 행의 값을 GetItem...() 함수로 가져올 때 위 오류가 발생했습니다.
SELECT 쿼리:
SELECT
T1.CODE AS CODE,
T2.COLUMN1 AS COLUMN1,
T2.COLUMN2 AS COLUMN1,
T2.COLUMN3 AS COLUMN3
FROM TABLE_1 T1, TABLE_2 T2
WHERE T1.CODE = T2.CODE
PowerBuilder 코드:
Integer li_i, li_count, li_code
String ls_column1, ls_column2, ls_column3
DataStore lds_temp
...
li_count = lds_temp.RowCount()
FOR li_i = 1 TO li_count
li_code = lds_temp.GetItemNumber(li_i, 'CODE') // 오류 발생
li_code = lds_temp.GetItemNumber(li_i, 'T1.CODE') // 오류 발생
li_code = lds_temp.GetItemNumber(li_i, 'TABLE_1_CODE') // 테이블명 + "_" + 칼럼명 = 정상 실행
NEXT
...
GetItemString(), GetItemNumber() 함수로 DataStore 조회 결과 값을 가져올 때는 칼럼명 앞에 테이블명을 붙여 TABLE_NAME_COLUMN_NAME 형태로 가져와야 오류가 발생하지 않습니다.
기존 코드에는 테이블명이 없었고 제 기억에는 테이블명이 없어도 정상적으로 실행됐던 것 같은데 원인은 아직 파악하지 못했습니다.
추후 찾게 되면 추가하겠습니다.
+ 2024. 11. 04.
이유는 모르겠으나 동일한 환경으로 impdp 한 다른 DB는 테이블명 없이 칼럼명만으로 값을 가져올 수 있습니다.
lds_temp.Object.DataWindow.Syntax로 확인해 봐도 칼럼명에 테이블명은 안 들어가 있네요.
스키마, Owner는 동일하고 expdp/impdp 중 문제가 생긴 게 아닌가 싶습니다...