Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да внедрим ora_hash (хеш с възможност за зареждане, който разделя всеки sql тип данни на n кофи)

Вярвам, че говорите за перфектна хеш функция. Функцията ORA_HASH на Oracle не е перфектна хеш функция.

http://en.wikipedia.org/wiki/Perfect_hash_function

Най-близо до това, което изглежда искате, е асоциативен масив. Oracle ги има. Започнете да играете с този пример:

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;
/  

Забележка:асоциативен масив е изграден върху хеш-таблица, горният пример използва fld1 като хеш ключ. Така че горното ще работи само ако, както описвате, перфектно хеширане, ако и само ако fld1 е уникално поле. Това е, което отделните трябва да направят. Никога не винаги е необходимо.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пример за Oracle Dynamic SQL за вмъкване на запис с помощта на DBMS_SQL

  2. Честа грешка в Oracle ORA-04068:съществуващото състояние на пакетите е отхвърлено

  3. Как да изчислим промените в Oracle sql

  4. получаване на грешка, аргументът '0' е извън диапазона

  5. Копиране на данни от файл в CLOB в Oracle