DBA Data[Home] [Help]

FUNCTION: DVSYS.DVLANG

Source


1 FUNCTION       dvlang(lid IN NUMBER, langtab_no IN NUMBER)
2 RETURN VARCHAR2
3 AS
4   l_lcnt NUMBER default 0;
5   l_lang VARCHAR2(3);
6   l_tab  VARCHAR2(30);
7   l_stmt VARCHAR2(256);
8   l_cursor    int;
9   l_status    int;
10 BEGIN
11   l_lang := LOWER(SYS_CONTEXT('USERENV','LANG'));
12   l_tab :=
13     CASE langtab_no
14       WHEN 1 THEN 'CODE_T$'
15       WHEN 2 THEN 'FACTOR_T$'
16       WHEN 3 THEN 'FACTOR_TYPE_T$'
17       WHEN 4 THEN 'RULE_T$'
18       WHEN 5 THEN 'RULE_SET_T$'
19       WHEN 6 THEN 'REALM_T$'
20     END;
21 
22   l_stmt := 'SELECT COUNT(*) FROM ' || l_tab || ' WHERE id# = :id AND language = :lang';
23   l_cursor := sys.dbms_sql.open_cursor;
24   sys.dbms_sql.parse( l_cursor, l_stmt, sys.dbms_sql.native );
25   sys.dbms_sql.bind_variable( l_cursor, ':id', lid );
26   sys.dbms_sql.bind_variable( l_cursor, ':lang', l_lang );
27   sys.dbms_sql.define_column( l_cursor, 1, l_lcnt );
28   l_status := sys.dbms_sql.execute( l_cursor );
29   if ( sys.dbms_sql.fetch_rows(l_cursor) > 0 )
30     then
31         sys.dbms_sql.column_value( l_cursor, 1, l_lcnt );
32   end if;
33   sys.dbms_sql.close_cursor(l_cursor);
34 
35   if (l_lcnt = 0) then
36     return 'us';
37   else
38     return l_lang;
39   end if;
40 END;