暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用哈希方法之一散列表中的文本列的存储过程

ASKTOM 2020-11-30
344

问题描述

各位专家好,

我已经编写了散列字符串的函数,但我不知道如何使用此函数从另一个表中取一列来散列该列,然后将散列值插入另一个havable。

任何帮助将不胜感激,

这是我的散列功能

CREATE OR REPLACE Function Hash_msg_clob
       (msg IN clob)
        RETURN varchar2
        AS
        hashed_value CLOB;
   
   --added
   l_timestamp_begin   varchar2(100);
   l_timestamp_end     varchar2(100);
   l_interval          varchar2(100);
   
         
  BEGIN
   
   IF msg IS NULL THEN
     dbms_output.put_line('No clob was passed');
   ELSE
      l_timestamp_begin := dbms_utility.get_time;
      
      DBMS_OUTPUT.PUT_LINE('The started time is: '||   l_timestamp_begin);
      
      SELECT STANDARD_HASH(dbms_lob.substr(msg, 4000, 1))INTO hashed_value FROM dual; --default algorithm SHA-1
      
      l_timestamp_end  := dbms_utility.get_time;
      
      DBMS_OUTPUT.PUT_LINE('The finished time is: '|| l_timestamp_end);
      
      
     
      DBMS_OUTPUT.PUT_LINE(hashed_value);
     
      l_interval       := l_timestamp_end - l_timestamp_begin;
      DBMS_OUTPUT.PUT_LINE('The interval time is: '|| l_interval/100);
      RETURN hashed_value;
      
   END IF; 
   EXCEPTION 
   WHEN OTHERS THEN
     DBMS_OUTPUT.PUT_LINE(SQLERRM);
     DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
     RAISE; 
     RETURN msg;
 END;
复制

专家解答

如果要散列并将其插入另一个表中,只需进行插入...select,调用查询中的函数:

create table src (
  c1 varchar2(100)
);
create table dest (
  c1 varchar2(100)
);

insert into src values ( 'Source string' );

insert into dest
  select hash_msg_clob ( c1 ) from src;
  
select * from dest;

C1                                         
0F02B0225FCC9E7AC77B548CC3938E0F134322AF    
复制

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论