Tôi tin rằng bạn đang nói về một hàm băm hoàn hảo. Hàm ORA_HASH của Oracle không phải là một hàm băm hoàn hảo.
http://en.wikipedia.org/wiki/Perfect_hash_ Chức năng
Gần nhất bạn sẽ đạt được những gì bạn dường như muốn là một mảng liên kết. Oracle có những thứ đó. Hãy bắt đầu chơi với ví dụ này:
set serverout on size 10000
DECLARE
cursor foo
is
select distinct fld1,fld2,fld9 from sometable;
type t is table of foo.%ROWTYPE
index by varchar2; -- change the index to an int if you want
myarray t; -- myarray is a table of records -- whatever foo returns
BEGIN
for x in foo
loop
-- index using the first column of the fetched row "fld1":
myarray(x.fld1)=x; -- assign the rowtype to the table of records.
end loop;
END;
/
Lưu ý:một mảng kết hợp được xây dựng trên bảng băm, ví dụ trên sử dụng fld1 làm khóa băm. Đó là những gì khác biệt trong đó phải làm. Nó không bao giờ luôn được yêu cầu.