相关疑难解决方法(0)

PL/SQL中是否有哈希函数?

我正在寻找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 hash plsql oracle-sqldeveloper

14
推荐指数
2
解决办法
3万
查看次数

ora_hash是否具有确定性?

我正在使用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将是确定性的.请参阅文档.

oracle ora-hash

12
推荐指数
2
解决办法
9490
查看次数

标签 统计

oracle ×2

hash ×1

ora-hash ×1

oracle-sqldeveloper ×1

plsql ×1