Q&A

  • NUMBER형 필드 입력시...
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;]이런 식으로 해야 하는것으로
   알고 있는데... 퍽이나 당황스럽고  에러가 나는 이유를 몰라 시간을 많이
   소비 했습니다.

왜 저런것일까요?
1  COMMENTS
  • Profile
    구창민 2004.12.09 02:07
    안녕하세요...

    저는 DB는 잘모르지만 ^_^;

    말씀하신 ParamByName 이 TQuery 의 ParamByName 이라면

    function ParamByName(const Value: String): TParam; <- 요렇게 생겼고요

    저것의 결과형이 TParam 형의 Properties 에 Value 라고 있을겁니다.

    그것은 Variant 형이고요.. 해서 대입시

    ParamByName('p_bsamt').Value := 1000000;

    하시면 원하시는 결과를 얻으실 수 있을거 같네요..

    그럼..즐거운 프로그래밍 하세요~