질문이 있습니다. 이 쿼리는 테이블에서 레코드를 찾아 문자열에 기록합니다. 하지만 문제는이 스크립트가 하나의 키 (여기서 t.keys = 'STIG6JGK')에만 작동하고 테이블 인 모든 키에는 작동하지 않는다는 것입니다. 나는 그것을 고칠 수 없다.
select LISTAGG(t.DEVNAME , ',') WITHIN GROUP (ORDER BY 1) as alldev
from ( select t.DEVNAME,
row_number () over (partition by keys order by SEQUENCE) rn_asc
from ASU_DEVICES t
where t.keys = 'STIG6JGK'
) t
하지만 "alldev"열에있는 것을 원하고 해시로 변환하고 열에 씁니다.
SELECT DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(alldev)) md5_val
FROM DUAL;
그런 다음이 파일을 '키'열의 '해시'테이블과 '해시'에 쓰고 싶습니다.
insert into hesh(key,hesh) VALUES ( t.keys ,md5_val)
이것은 하나 또는 두 개의 요청으로 수행하려는 모든 것이지만 동시에 모든 키에 대해 수행합니다. 도움을 주시면 감사하겠습니다.
세 가지 다른 쿼리를 하나로 병합 할 수 없습니다.
모든 키에 대해 다음을 사용하여 모두 결합 할 수 있습니다 .
INSERT INTO HESH (KEY, HESH)
SELECT
KEYS,
DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT => UTL_RAW.CAST_TO_RAW(ALLDEV))
FROM
( SELECT T.KEYS,
LISTAGG(T.DEVNAME, ',') WITHIN GROUP( ORDER BY 1) AS ALLDEV
FROM ASU_DEVICES T
GROUP BY T.KEYS
);
병합을 사용하여 다음과 같이 ecisting 레코드에서 업데이트 할 수 있습니다.
MERGE INTO HESH H
USING ( SELECT T.KEYS,
LISTAGG(T.DEVNAME, ',') WITHIN GROUP( ORDER BY 1) AS ALLDEV
FROM ASU_DEVICES T
GROUP BY T.KEYS
) SRC
ON (H.KEY = SRC.KEY)
WHEN MATCHED THEN
UPDATE SET H.HESH = DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT => UTL_RAW.CAST_TO_RAW(ALLDEV));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다