dbms_utility.get_hash_value
这段代码在ORACLE里经常用,但是不知道什么意思。
请知道的高手给解释下。
第一,dbms_utility是什么东西?
第二,get_hash_value的返回值是什么?标准情况下可以带几个参数,各个参数又是什么意思?
饿……问题不算太多吧……

解决方案 »

  1.   

    GET_HASH_VALUE Function
    This function computes a hash value for the given string.SyntaxDBMS_UTILITY.GET_HASH_VALUE (
       name      VARCHAR2, 
       base      NUMBER, 
       hash_size NUMBER)
      RETURN NUMBER;
    ParametersTable 116-20 GET_HASH_VALUE Function ParametersParameter          Description 
    name               String to be hashed. 
    base               Base value for the returned hash value to start at. 
    hash_size          Desired size of the hash table. 
      

  2.   

    我觉得这就是一个单向算法,能够把不同的字符串分散到不同的单元中去.每一个单元就是一个哈希值.
    我样是出于分散数据行考虑,不一定保证唯一性,其实很多时候PK是用sequence生成的。
      

  3.   

    --本示例求一个长度为10的随机字符串的HASH值,HASH值要求在1到16之间,此限制由下面的红色字体确定。DECLARE
      v_string VARCHAR2(10);
      v_hash   NUMBER;
    BEGIN
    FOR i IN 1..20 LOOP  --循环20次
      SELECT dbms_random.string('', 10) 
        INTO v_string
        FROM DUAL;     --取得一个长度为10的随机字符串  SELECT dbms_utility.get_hash_value(v_string, 1, 16)
        INTO v_hash
        FROM DUAL;        --取得字符串的hash值,值的范围为1-16,后一个参数要求为2的乘方数  DBMS_OUTPUT.PUT_LINE(v_string || ':' || v_hash);  --显示出20个随机字符串及其HASH值
    END LOOP;
    END;
    /
      

  4.   

    --本示例求一个长度为10的随机字符串的HASH值,HASH值要求在1到16之间,此限制由下面的红色字体确定。 DECLARE 
      v_string VARCHAR2(10); 
      v_hash  NUMBER; 
    BEGIN 
    FOR i IN 1..20 LOOP  --循环20次 
      SELECT dbms_random.string('', 10) 
        INTO v_string 
        FROM DUAL;    --取得一个长度为10的随机字符串   SELECT dbms_utility.get_hash_value(v_string, 116
        INTO v_hash 
        FROM DUAL;        --取得字符串的hash值,值的范围为1-16,后一个参数要求为2的乘方数   DBMS_OUTPUT.PUT_LINE(v_string || ':' || v_hash);  --显示出20个随机字符串及其HASH值 
    END LOOP; 
    END;