oracle 函數屬性 deterministic

oracle函數的其中一個屬性就是 deterministic
它表示一個函數在輸入不變的情況下輸出是否確定,像oracle的內置函數 UPPER,TRUNC 等都是 deterministic 函數,而像 DBMS_RANDOM.VALUE 就不是。

寫法如下

create or replace function f1 (
  p1 number
) return number deterministic
is
begin
  return p1 * 2;
end;
/

在創建自定義函數索引是也需要添加 deterministic
例如

--自定義的字符反轉函數
create or replace function f_reverse(
  var in varchar2
) return varchar2 deterministic
is 
/**
--支持數字,字符串,中文翻轉
--最大支持字符串長度爲32767字節
**/
temp   varchar2(32767);
i      number(38);
begin
	if var is null
	then
		return null;
	else
		i := length(var);
		loop
			temp := temp || substr(var, i, 1);
			i := i - 1;
			exit when i = 0;
		end loop;
		return temp;
	end if;
end; 

參考:
https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_packages.htm#ADFNS384

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章