merge into 어디 부분이 틀렸는지 모르겠습니다.. 0 2 1,190

by 성수다 [Oracle 기초] [2020.11.16 14:26:11]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
MERGE INTO T_MNG_ACNT t
USING (
      SELECT SVR_IP server,
             ACNT_NM acntnm,
             SVR_PORT port,
             DB_TYP dbtype,
             DB_NAME name,
             DB_USER dbuser,
             DB_PWD pwd
             FROM dual
             ) tmp
ON (t.DB_USER = tmp.dbuser
    AND t.ACNT_NM = tmp.acntnm)
WHEN MATCHED THEN
    UPDATE SET
        t.SVR_IP = tmp.server,
        t.SVR_PORT = tmp.port,
        t.DB_TYP = tmp.dbtype,
        t.db_name = tmp.name,
        t.DB_USER = tmp.dbuser,
        t.DB_PWD = tmp.pwd
WHEN NOT MATCHED THEN
    insert(t.ACNT_ID,
            t.ACNT_NM,
            t.ACNT_DESC,
            t.SVR_IP,
            t.SVR_PORT,
            t.DB_TYP,
            t.DB_NAME,
            t.DB_USER,
            t.DB_PWD,
            t.USE_YN,
            t.DEL_YN,
            t.REG_DT,
            t.REG_ID,
            t.MOD_DT,
            t.MOD_ID)
    VALUES(
           (SELECT nvl(max(ACNT_ID),99)+1
            FROM T_MNG_ACNT),
             'test',
             'test',
             'test',
              2017  ,
              'oracle',
              'test',
              'test',
              'test',
              'Y',
              'N',
               SYSDATE,
                0,
               SYSDATE,
                0);

mertge into 를 처음 사용해 보는데요 SQL Error [904] [42000]: ORA-00904: "DB_PWD": 부적합한 식별자

에러가 뜨는데 t.db_pwd로 해줘도 안돼서 질문 드립니다 ㅠ 

 

by 마농 [2020.11.16 14:52:36]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
MERGE INTO t_mng_acnt t
USING (SELECT 'test'   db_user
            , 'test'   acnt_nm
            , 'test'   acnt_desc
            , 'test'   svr_ip
            ,  2017    svr_port
            , 'oracle' db_typ
            , 'test'   db_name
            , 'test'   db_pwd
         FROM dual
       ) tmp
ON  (t.db_user = tmp.db_user
AND  t.acnt_nm = tmp.acnt_nm)
WHEN MATCHED THEN
UPDATE SET t.svr_ip   = tmp.svr_ip 
         , t.svr_port = tmp.svr_port
         , t.db_typ   = tmp.db_typ 
         , t.db_name  = tmp.db_name
         , t.db_pwd   = tmp.db_pwd 
WHEN NOT MATCHED THEN
INSERT ( acnt_id
       , acnt_nm
       , acnt_desc
       , svr_ip
       , svr_port
       , db_typ
       , db_name
       , db_user
       , db_pwd
       , use_yn
       , del_yn
       , reg_dt
       , reg_id
       , mod_dt
       , mod_id
       )
VALUES ( (SELECT NVL(MAX(acnt_id), 99) + 1 FROM t_mng_acnt)
       , tmp.acnt_nm
       , tmp.acnt_desc
       , tmp.svr_ip
       , tmp.svr_port
       , tmp.db_typ
       , tmp.db_name
       , tmp.db_user
       , tmp.db_pwd
       , 'Y'
       , 'N'
       , sysdate
       , 0
       , sysdate
       , 0
       )
;

 


by 성수다 [2020.11.16 15:11:13]

감사합니다! 설명이 부족했는데 원하는 쿼리로 바꿔주셨네요 ㅠ 배우고 갑니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입