Oracle STANDARD_PLSQL에서 해시를 사용할 수 없습니까?
STANDARD_를 사용하려고 합니다.PL/SQL에서 해시 오라클(12c) 기능을 사용할 수 없지만 사용할 수 없는 것 같습니다.
SQL> exec dbms_output.put_line(STANDARD_HASH('test'));
BEGIN dbms_output.put_line(STANDARD_HASH('test')); END;
*
ERROR at line 1:
ORA-06550: line 1, column 28:
PLS-00201: identifier 'STANDARD_HASH' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
From sql은 정상적으로 작동합니다.
SQL> select STANDARD_HASH('test') from dual;
STANDARD_HASH('TEST')
----------------------------------------
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
왜일까요? STANDARD를 구현하는 가장 좋은 방법은 무엇일까요?PLSQL의 해시?
안부 전해요
아직 PL/SQL의 일부가 아닌 것 같습니다.12c
.
이를 해결하기 위해 사용합니다.SELECT INTO
PL/SQL에서:
SQL> set serveroutput on
SQL> DECLARE
2 str VARCHAR2(40);
3 BEGIN
4 SELECT STANDARD_HASH('test') INTO str FROM dual;
5 dbms_output.put_line(str);
6 END;
7 /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
PL/SQL procedure successfully completed.
SQL>
함수를 만들어서 PL/SQL에서 필요할 때 언제든지 사용하는 것을 제안합니다.
예를들면,
SQL> CREATE OR REPLACE FUNCTION STANDARD_HASH_OUTPUT(str IN VARCHAR2)
2 RETURN VARCHAR2
3 AS
4 op VARCHAR2(40);
5 BEGIN
6 SELECT STANDARD_HASH(str) INTO op FROM dual;
7 RETURN op;
8 END;
9 /
Function created.
PL/SQL 블록에서 함수를 직접 호출합니다.
SQL> BEGIN
2 dbms_output.put_line(STANDARD_HASH_OUTPUT('test'));
3 END;
4 /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
PL/SQL procedure successfully completed.
SQL>
텍스트의 경우 STANDARD_해시가 DBMS_CRIPto와 동일합니다.SHA1을 사용한 해시:
begin
dbms_output.put_line(dbms_crypto.hash(cast('test' as clob), dbms_crypto.hash_sh1));
end;
/
출력:
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
다른 데이터 유형의 경우 해시 함수로 전달되는 방법은 문서화되어 있지 않습니다.
표준 해시를 사용하면 해시 알고리즘을 지정할 수 있습니다.알고리즘은 SHA1, SHA256, SHA384, SHA512, MD5입니다. 이 인수를 생략하면 SHA1이 사용됩니다.
sys_guid보다 더 친숙한 GUID를 얻으려면 다음과 같이 하십시오.
LOWER (CAST (standard_hash (SYS_GUID (), 'MD5') AS VARCHAR2 (40)))
2,050만 건의 기록을 충돌 없이 테스트해봤습니다
언급URL : https://stackoverflow.com/questions/35574602/oracle-standard-hash-not-available-in-plsql
'source' 카테고리의 다른 글
ConstraintLayout 제약 조건 종속 뷰가 사라지면 레이아웃 뷰가 이상하게 동작합니다. (0) | 2023.10.12 |
---|---|
사이트 간 AJAX 요청 (0) | 2023.10.12 |
Python에서 numpynd array의 non-NaN 요소 수 계산 (0) | 2023.10.07 |
R Studio를 이용한 digital ocean의 mariaDB 연결 (0) | 2023.10.07 |
스프링 - applicationContext.xml이 없으므로 열 수 없습니다. (0) | 2023.10.07 |