까막님 그러면 이걸 스토어드프로시져로 작성해야 한다는 말씀인지요?
그냥 SQL 한문장가지고는 처리가 안되나요?
까막 님이 쓰신 글 :
: 델맨 님이 쓰신 글 :
: : 새로운 월이 될때마다 시리얼번호를 초기화 해서 사용하려고 아래와 같은 코드를 만들었습니다.
: : 레코드에 기존의 데이타가 들어 있을때는 정상적으로 동작하는데 ,
: : null반환하지 마라고 COALESCE 을 사용하여 null일때 리턴할 데이타를 지정해줬는데도
: : 한개의 자료도 없을때 (그러니까 최초의 데이타생성시)는 null만 반환합니다.
: :
: : 주력DB를 MS만 쓰다가 이제부터 FIREBIRD로 바꾸려고 하는데 힘드네요....
: : 조언부탁드립니다.
: :
: : SELECT
: : COALESCE ( KK.CUSTCODESERIAL + 1 , 1 ) AS LASTCODE
: : FROM
: : (
: : SELECT
: : FIRST 1 CUSTCODESERIAL
: : FROM
: : GFCUST
: : WHERE
: : CUSTCODEY = '2007'
: : AND
: : CUSTCODEM = '11'
: : ORDER BY
: : CUSTCODEY DESC , CUSTCODEM DESC
: : ) AS KK
: :
: : 그리고
: : SELECT
: : CASE KK.CUSTCODESERIAL
: : WHEN NULL THEN 1
: : ELSE KK.CUSTCODESERIAL + 1
: : END AS LASTCODE
: : FROM
: : (
: : SELECT
: : FIRST 1 CUSTCODESERIAL
: : FROM
: : GFCUST
: : WHERE
: : CUSTCODEY = '2007'
: : AND
: : CUSTCODEM = '11'
: : ORDER BY
: : CUSTCODEY DESC , CUSTCODEM DESC
: : ) AS KK
: : 이렇게 해도 마찬가지입니다.
:
: 안녕하세요. 까막입니다.
:
: 저도 그렇고, 다른 분들도 그런 실수를 많이 하실 것 같은데요.
: COALESCE 함수를 써서 NULL 값을 제거 하려면 결과 RECORD 가 하나 이상은 있어야 합니다.
: 결과값 자체가 아예 없을 경우는 함수도 동작을 하지 않읍니다.
:
: 따로 변수를 하나 등록을 하셔서, 그 값이 NULL 일 경우 COALESCE 함수 처리를 하시는게 좋을 겁니다.
:
: DECLARE VARIABLE vResultValue DECIMAL(01,0);
:
: SELECT ResultValue
: FROM TableName
: INTO :vResultValue;
:
: vResultValue = COALESCE(:vResultValue,1);
:
: 이런 식으로 처리 하셔야 원하시는 결과를 얻을 수 있을 겁니다.
:
:
:
: 위대한 단군혼이 살아있는 나라.... 대한민국.
|