Çarşamba, Kasım 30, 2005

Contains içinde PL/SQL fonskiyonları

Farzedelim turkcesi fonksiyonu verilen İngilizce kelimenin Türkçe karşılığını veriyor ve kullanıcısın bu fonksiyonu yürütme hakkı var. Bu durumda aşağıdaki şekilde Contains sorgusu içinde fonksiyon şu şekilde kullanılabilir:

SELECT SCORE(1), title from news WHERE CONTAINS(text, turkcesi('cat'), 1) > 0 ORDER BY SCORE(1);

Örnek fonksiyon:

Create or Replace Function Get_Terms ( inTerm IN VARCHAR2 )
return VARCHAR2
as
my_thes VARCHAR2(4) := 'NSTC';
xtab ctx_thes.exp_tab;
result VARCHAR2(1000);
begin
ctx_thes.syn(xtab,inTerm,my_thes);
result := xtab(1).xphrase;
for i in 2..xtab.count loop
result:= result ' accum ' xtab(i).xphrase;
end loop;
dbms_output.put_line(result);
return result;
end;

Bir fonksiyonu ya da prosedürü başka kullanıcılara yürütme hakkı vermek için gerekli yazım kuralı:

grant execute on object to user;


select name, score(1) from doc_table where contains(text,ctxsys.get_terms('ships'),1)>0

Hiç yorum yok: