我正在寻找PL/SQL中的Hash函数,以获取varchar的哈希值.我在Oracle 10中找到了一个名为dbms_crypto的软件包,其函数为dbms_crypto.hash,甚至还有其他软件包dbms_sqlhash.getHash,但是在我调用它们的地方,我收到的消息就是找不到它们...
有人知道我怎么称呼他们?还有其他套餐吗?
这是我的代码
DECLARE
l_textToHash VARCHAR2(19) := 'toto123';
l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
l_encrypted_raw RAW(2048);
BEGIN
dbms_output.put_line('CC: ' || l_ccn_raw);
l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 3);
dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
/
Run Code Online (Sandbox Code Playgroud)
这是消息
Error starting at line 1 in command:
DECLARE
l_textToHash VARCHAR2(19) := 'toto123';
l_ccn_raw RAW(128) := utl_raw.cast_to_raw(l_textToHash);
l_encrypted_raw RAW(2048);
BEGIN
dbms_output.put_line('CC: ' || l_ccn_raw);
l_encrypted_raw := dbms_crypto.hash(l_ccn_raw, 3);
dbms_output.put_line('SH1: ' || l_encrypted_raw);
END;
Error report:
ORA-06550: line 7, column 22:
PLS-00201: identifier 'DBMS_CRYPTO' must be declared
ORA-06550: line 7, column …Run Code Online (Sandbox Code Playgroud) 我正在使用Oracle数据库,我需要能够在表中对数据进行分区.据我所知,Rracle有一个ora_hash函数,可以将数据分区为桶.ora_hash函数是否确定?
在我的程序中,我将进行几个不同的数据库查询,每个查询都要求一个不同的桶号.
例如,在一个查询中,我可能会要求前两个桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
Run Code Online (Sandbox Code Playgroud)
在随后的查询中,我可能会要求第2和第3个桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,ora_hash是否总是将表分成完全相同的10个桶?假设表中的数据没有改变.第二个桶(桶1)在两个查询中是否相同?
有文档表明,种子值使oracle能够为同一数据集返回不同的结果.所以我假设如果我不使用种子值,那么ora_hash将是确定性的.请参阅文档.