X_SQL := '' ;
X_SQL := X_SQL || ' UPDATE A_MASTER_TB A ' || CHR(13) ;
X_SQL := X_SQL || ' SET A.UPT_SEQ = ' || P_LOGIN_USER_SEQ || CHR(13) ;
X_SQL := X_SQL || ' , A.UPT_DT = SYSDATE ' || CHR(13) ;
X_SQL := X_SQL || ' , A.FINE_YN = ''10250001'' ' || CHR(13) ; --완료값 삽입
X_SQL := X_SQL || ' , A.PRE_BILL_SEQ = (SELECT * FROM B_MASTER_TB B WHERE 1=1 AND B.S_DATE = ''' || S_DATE || ''' AND B.E_DATE = ''' || E_DATE || ''' AND B.FINE_YN = '10250001' ) ' || CHR(13) ;
UPDATE시에 해당 데이터를 가져와서 업데이트 넣어주려하는데 .. 구문 오류가 발생했다고 나오네요..
끝에 AND B.FINE_YN = '10250001'에서 문제가 생기는것 같은데 .. 직접 값을 못넣는건가요 ... ?
참고로, PL/SQL예서 복잡한 다이내믹 쿼리를 나타내려면, 쿼리를 작은 따옴표로 감싸 주는것 보다, q'[ ]'로 감싸 주는것이 편합니다. 여기서 q'[ ]' 로 쿼리를 감싸 주는 대신에, 상황에 따라, q'< >', q'( ), 'q'{ }', 혹은 q'! !' 를 이용할 수 있습니다. 이렇게 하면, 아래의 예처럼 input값을 표현하는 것도 간단해지고 CHR(13)을 더해줄 필요도 없습니다.
X_SQL := q'[ UPDATE A_MASTER_TB A SET A.UPT_SEQ = ]' || P_LOGIN_USER_SEQ || q'[, A.UPT_DT = SYSDATE, A.FINE_YN = '10250001', A.PRE_BILL_SEQ = (SELECT 컬럼이름 FROM B_MASTER_TB B WHERE 1 = 1 AND B.S_DATE = ']' || S_DATE || q'[' AND B.E_DATE = ']' || E_DATE || q'[' AND B.FINE_YN = '10250001') ]';