현재 저희는 db link를 사용해서 MS-SQL SERVER의 데이타를 읽어서 화면에 뿌리고있습니다.
그런데 날짜형식의 데이타를 쿼리할때 계속 쿼리되는 양이 틀려집니다.
MS-SQL쪽에는 VIEW를 만들었는데
CREATE VIEW
AS
SELECT
CONVERT(VARCHAR(8),CHANGEDATE,112) AS CHANGEDATE
FROM ATABLE
위와같이 만들고 아밥에서는
(STARTDATE는 20091101이런식으로 들어갑니다.)
P_QUERY = 'SELECT CHANGEDATE '
' FROM ATABLE@DB_REAL'
' WHERE CHANGEDATE >= ''' :STARTDATE '' AND CHANGEDATE <= ''' ENDDATE ''''
CREATE OBJECT con_ref.
stmt_ref = con_ref->create_statement( ).
rs_ref = stmt_ref->execute_query( P_QUERY ).
GET REFERENCE OF ALV_ITAB INTO lt_ref.
rs_ref->set_param_table( lt_ref ).
rows = rs_ref->next_package( ).
rs_ref->close( ).
위처럼 했을때 ALV_ITAB에는 건수가 200건, 400건,500건..각각 틀리게 들어갑니다.
SQL-SERVER에서 쿼리돌렸을때는 건수가 20091101일자만 39,888건이 있습니다.
데이타 건수가 적을경우는 위와같은 방식으로 해도 문제가 없는데 데이타 건수가
많아지니 저렇게 들쑥날쑥 데이타를 가져옵니다.
혹시 아시는분 계시면 답변좀 주실수 있을까요?
자체 해결.
MS-SQL일경우 데이타 타입에 따라 쿼리가 안됩니다.
다음데이타 타입의 경우 변경을 해주어야합니다.
datetime ->convert(char(8),field명,112)로
smallint,tinyint -> convert(int,field명)으로 변경해야합니다.
그리고 이번에 잘못한 실수는
money타입인데 구조체에서 dec(10,2)로 지정해서 쓰는 바람에 나는 오류였습니다.
dec(20,4)로 지정해서 하고나니 문제가 없어졌습니다.
혹시 참고하세요.