SQL> desc ac180t;
이름 널? 유형
----------- -------- ----------
A18_BSAMT NOT NULL NUMBER(38)
A18_JSAMT NOT NULL NUMBER(38)
SQL> desc tr110t;
이름 널? 유형
-------- -------- -------
GA_GJMT NUMBER
GA_GJMU NUMBER
SQLplus로 Table을 조회 한 결과 입니다.
DB는 오라클 8.1.7 입니다.
위쪽 ac180t 테이블은 다른사람이 생성을 해서 조건이 어떤지 잘 모릅니다.
아래쪽 tr110t 는 데이터타입을 NUMBER 형으로생성을 한 것입니다.
이럴때요...
SQL(Query)로 Insert, UpDate 를 할 때 방법이 서로 틀립니다.
ac180t:
parambyname('p_bsamt').asfloat := 1000000; --> 에러 입니다.
parambyname('p_bsamt').asstring := FlostToStr(1000000); --> 이래야 됩니다.
tr110t:
parambyname('p_gjmt').asfloat := 1000000; --> 잘 됩니다.
제 상식으로는 NUMBER형 필드는
[parambyname('p_gjmt').asfloat := 1000000;]이런 식으로 해야 하는것으로
알고 있는데... 퍽이나 당황스럽고 에러가 나는 이유를 몰라 시간을 많이
소비 했습니다.
왜 저런것일까요?
저는 DB는 잘모르지만 ^_^;
말씀하신 ParamByName 이 TQuery 의 ParamByName 이라면
function ParamByName(const Value: String): TParam; <- 요렇게 생겼고요
저것의 결과형이 TParam 형의 Properties 에 Value 라고 있을겁니다.
그것은 Variant 형이고요.. 해서 대입시
ParamByName('p_bsamt').Value := 1000000;
하시면 원하시는 결과를 얻으실 수 있을거 같네요..
그럼..즐거운 프로그래밍 하세요~