dbms_utility.get_hash_value
这段代码在ORACLE里经常用,但是不知道什么意思。
请知道的高手给解释下。
第一,dbms_utility是什么东西?
第二,get_hash_value的返回值是什么?标准情况下可以带几个参数,各个参数又是什么意思?
饿……问题不算太多吧……
这段代码在ORACLE里经常用,但是不知道什么意思。
请知道的高手给解释下。
第一,dbms_utility是什么东西?
第二,get_hash_value的返回值是什么?标准情况下可以带几个参数,各个参数又是什么意思?
饿……问题不算太多吧……
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.
我样是出于分散数据行考虑,不一定保证唯一性,其实很多时候PK是用sequence生成的。
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;
/
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;
/