DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEM_IM_TOKENS_WRAPPERS_PVT

Source


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;