1 PACKAGE BODY IEM_IM_TOKENS_WRAPPERS_PVT as
2 /* $Header: iemtimwb.pls 115.6 2002/12/22 01:07:42 sboorela shipped $*/
3
4 G_PKG_NAME CONSTANT varchar2(30) :='IEM_IM_TOKENS_WRAPPERS_PVT';
5
6 FUNCTION GetTokens(p_msgid IN INTEGER, p_part IN INTEGER,
7 p_flags IN INTEGER, p_link IN VARCHAR2,
8 p_language IN VARCHAR2,
9 p_token_tab OUT NOCOPY token_tab,
10 p_errtext OUT NOCOPY VARCHAR2) RETURN INTEGER
11 IS
12 p_token_str VARCHAR2(32000);
13 l_token_str VARCHAR2(32000);
14 l_work_str VARCHAR2(3000);
15 p_index NUMBER := 0;
16 l_count NUMBER := 1;
17 l_bool BOOLEAN := TRUE;
18 l_loc_t NUMBER;
19 l_status NUMBER := -1; /* defaule value for bug 2677236 */
20 l_tmp_token VARCHAR2(150);
21 l_token_tab1 token_tab;
22 l_weight NUMBER := 1;
23
24 l_plsql_block VARCHAR2(2000) := 'BEGIN :x := IM_IMT_API.gettokensw'||p_link||'(:a,:b,:c,:d,:e,:f,:g); END;';
25
26 BEGIN
27 EXECUTE IMMEDIATE l_plsql_block USING OUT l_status, IN p_msgid,IN p_part, IN p_flags, IN p_language,
28 OUT p_token_str, OUT p_index, OUT p_errtext;
29
30 --DBMS_OUTPUT.PUT_LINE('NUMBER OF TOKENS := '||p_index);
31 IF (p_index > 0) THEN
32 WHILE (l_bool) LOOP
33 SELECT INSTR(p_token_str, '<T>', 1,1) INTO l_loc_t FROM DUAL;
34 SELECT SUBSTR(p_token_str,1, l_loc_t-1) INTO l_work_str FROM DUAL;
35
36 -- Build table from token_str returned from OES.
37 SELECT l_work_str INTO l_token_tab1(l_count).TOKEN FROM DUAL;
38 --INSERT INTO IEM_TOKENS(MSGID, TOKEN) VALUES(p_msgid,l_work_str);
39 l_count := l_count+1;
40 SELECT SUBSTR(p_token_str,l_loc_t+3) INTO l_token_str FROM DUAL;
41 p_token_str := l_token_str;
42 p_index := p_index-1;
43 IF (p_index < 1) THEN
44 l_bool := FALSE;
45 END IF;
46 END LOOP;
47 l_count:=1;
48 for i in 1 .. l_token_tab1.count loop
49 l_tmp_token := l_token_tab1(i).token;
50 for w in (i+1) .. l_token_tab1.last loop
51 if l_tmp_token = l_token_tab1(w).token then
52 l_weight := l_weight+1;
53 l_token_tab1(w).token := '99999';
54 end if;
55 end loop;
56 if l_tmp_token <> '99999' then
57 p_token_tab(l_count).token := l_tmp_token;
58 p_token_tab(l_count).weight := l_weight;
59 l_weight:= 1;
60 l_count:= l_count+1;
61 end if;
62 end loop;
63 END IF;
64
65 -- Appropriate err_text to be returned
66 -- error number to be returned
67
68 return l_status;
69
70 EXCEPTION
71 WHEN OTHERS THEN
72 p_errtext := SUBSTR(p_errtext ||' '||SQLERRM, 1, 254);
73 return l_status;
74 -- DBMS_OUTPUT.PUT_LINE(SQLERRM);
75 END gettokens;
76
77 END IEM_IM_TOKENS_WRAPPERS_PVT;