17: l_dummy INTEGER;
18: l_index NUMBER:=1;
19:
20: BEGIN
21: l_cursor := DBMS_SQL.OPEN_CURSOR;
22: l_select_col_stmt := 'select column_name, data_type from dba_tab_columns'
23: || ' where table_name = :tab_name and owner = ''XLE'' order by column_id';
24: l_select_val_stmt := 'select';
25:
22: l_select_col_stmt := 'select column_name, data_type from dba_tab_columns'
23: || ' where table_name = :tab_name and owner = ''XLE'' order by column_id';
24: l_select_val_stmt := 'select';
25:
26: DBMS_SQL.PARSE(l_cursor, l_select_col_stmt, DBMS_SQL.V7);
27: DBMS_SQL.BIND_VARIABLE(l_cursor, ':tab_name', p_table_name);
28: DBMS_SQL.DEFINE_COLUMN(l_cursor, 1, l_column_name, 30);
29: DBMS_SQL.DEFINE_COLUMN(l_cursor, 2, l_data_type, 106);
30:
23: || ' where table_name = :tab_name and owner = ''XLE'' order by column_id';
24: l_select_val_stmt := 'select';
25:
26: DBMS_SQL.PARSE(l_cursor, l_select_col_stmt, DBMS_SQL.V7);
27: DBMS_SQL.BIND_VARIABLE(l_cursor, ':tab_name', p_table_name);
28: DBMS_SQL.DEFINE_COLUMN(l_cursor, 1, l_column_name, 30);
29: DBMS_SQL.DEFINE_COLUMN(l_cursor, 2, l_data_type, 106);
30:
31: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
24: l_select_val_stmt := 'select';
25:
26: DBMS_SQL.PARSE(l_cursor, l_select_col_stmt, DBMS_SQL.V7);
27: DBMS_SQL.BIND_VARIABLE(l_cursor, ':tab_name', p_table_name);
28: DBMS_SQL.DEFINE_COLUMN(l_cursor, 1, l_column_name, 30);
29: DBMS_SQL.DEFINE_COLUMN(l_cursor, 2, l_data_type, 106);
30:
31: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
32:
25:
26: DBMS_SQL.PARSE(l_cursor, l_select_col_stmt, DBMS_SQL.V7);
27: DBMS_SQL.BIND_VARIABLE(l_cursor, ':tab_name', p_table_name);
28: DBMS_SQL.DEFINE_COLUMN(l_cursor, 1, l_column_name, 30);
29: DBMS_SQL.DEFINE_COLUMN(l_cursor, 2, l_data_type, 106);
30:
31: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
32:
33: l_index := 1;
27: DBMS_SQL.BIND_VARIABLE(l_cursor, ':tab_name', p_table_name);
28: DBMS_SQL.DEFINE_COLUMN(l_cursor, 1, l_column_name, 30);
29: DBMS_SQL.DEFINE_COLUMN(l_cursor, 2, l_data_type, 106);
30:
31: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
32:
33: l_index := 1;
34:
35: LOOP
32:
33: l_index := 1;
34:
35: LOOP
36: IF DBMS_SQL.FETCH_ROWS(l_cursor) = 0 THEN
37: EXIT;
38: END IF;
39:
40: DBMS_SQL.COLUMN_VALUE(l_cursor, 1, l_column_name);
36: IF DBMS_SQL.FETCH_ROWS(l_cursor) = 0 THEN
37: EXIT;
38: END IF;
39:
40: DBMS_SQL.COLUMN_VALUE(l_cursor, 1, l_column_name);
41: DBMS_SQL.COLUMN_VALUE(l_cursor, 2, l_data_type);
42:
43: -- some standard columns are not tracked
44: IF (l_column_name NOT IN ('CREATED_BY',
37: EXIT;
38: END IF;
39:
40: DBMS_SQL.COLUMN_VALUE(l_cursor, 1, l_column_name);
41: DBMS_SQL.COLUMN_VALUE(l_cursor, 2, l_data_type);
42:
43: -- some standard columns are not tracked
44: IF (l_column_name NOT IN ('CREATED_BY',
45: 'CREATION_DATE',
78: END IF;
79: END LOOP;
80: l_index := G_VALUE_LIST.count;
81:
82: DBMS_SQL.CLOSE_CURSOR(l_cursor);
83:
84: IF (length(l_select_val_stmt) > 6) THEN
85: l_select_val_stmt := l_select_val_stmt || ' from ' || p_table_name || '
86: where ';
85: l_select_val_stmt := l_select_val_stmt || ' from ' || p_table_name || '
86: where ';
87: l_select_val_stmt := l_select_val_stmt || p_primary_key_name || ' = :p_id';
88:
89: l_cursor := DBMS_SQL.OPEN_CURSOR;
90:
91: DBMS_SQL.PARSE(l_cursor, l_select_val_stmt, DBMS_SQL.V7);
92: DBMS_SQL.BIND_VARIABLE(l_cursor, ':p_id', p_id);
93:
87: l_select_val_stmt := l_select_val_stmt || p_primary_key_name || ' = :p_id';
88:
89: l_cursor := DBMS_SQL.OPEN_CURSOR;
90:
91: DBMS_SQL.PARSE(l_cursor, l_select_val_stmt, DBMS_SQL.V7);
92: DBMS_SQL.BIND_VARIABLE(l_cursor, ':p_id', p_id);
93:
94: --log_csc_form_debug_message('Shikha','select'||l_select_val_stmt);
95: --log_csc_form_debug_message('Shikha','cursor'||l_cursor);
88:
89: l_cursor := DBMS_SQL.OPEN_CURSOR;
90:
91: DBMS_SQL.PARSE(l_cursor, l_select_val_stmt, DBMS_SQL.V7);
92: DBMS_SQL.BIND_VARIABLE(l_cursor, ':p_id', p_id);
93:
94: --log_csc_form_debug_message('Shikha','select'||l_select_val_stmt);
95: --log_csc_form_debug_message('Shikha','cursor'||l_cursor);
96: FOR i IN 1..l_index LOOP
94: --log_csc_form_debug_message('Shikha','select'||l_select_val_stmt);
95: --log_csc_form_debug_message('Shikha','cursor'||l_cursor);
96: FOR i IN 1..l_index LOOP
97: IF (p_mode = 'PRE') THEN
98: DBMS_SQL.DEFINE_COLUMN(l_cursor, i, G_VALUE_LIST(i).old_value, 2000);
99: ELSE
100: DBMS_SQL.DEFINE_COLUMN(l_cursor, i, G_VALUE_LIST(i).new_value, 2000);
101: END IF;
102: END LOOP;
96: FOR i IN 1..l_index LOOP
97: IF (p_mode = 'PRE') THEN
98: DBMS_SQL.DEFINE_COLUMN(l_cursor, i, G_VALUE_LIST(i).old_value, 2000);
99: ELSE
100: DBMS_SQL.DEFINE_COLUMN(l_cursor, i, G_VALUE_LIST(i).new_value, 2000);
101: END IF;
102: END LOOP;
103:
104: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
100: DBMS_SQL.DEFINE_COLUMN(l_cursor, i, G_VALUE_LIST(i).new_value, 2000);
101: END IF;
102: END LOOP;
103:
104: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
105:
106: IF DBMS_SQL.FETCH_ROWS(l_cursor) = 0 THEN
107: --log_csc_form_debug_message('Shikha','inside fetch'||l_cursor);
108: RAISE NO_DATA_FOUND;
102: END LOOP;
103:
104: l_dummy := DBMS_SQL.EXECUTE(l_cursor);
105:
106: IF DBMS_SQL.FETCH_ROWS(l_cursor) = 0 THEN
107: --log_csc_form_debug_message('Shikha','inside fetch'||l_cursor);
108: RAISE NO_DATA_FOUND;
109: END IF;
110:
109: END IF;
110:
111: FOR i IN 1..l_index LOOP
112: IF (p_mode = 'PRE') THEN
113: DBMS_SQL.COLUMN_VALUE(l_cursor, i, G_VALUE_LIST(i).old_value);
114: ELSE
115: DBMS_SQL.COLUMN_VALUE(l_cursor, i, G_VALUE_LIST(i).new_value);
116: END IF;
117: END LOOP;
111: FOR i IN 1..l_index LOOP
112: IF (p_mode = 'PRE') THEN
113: DBMS_SQL.COLUMN_VALUE(l_cursor, i, G_VALUE_LIST(i).old_value);
114: ELSE
115: DBMS_SQL.COLUMN_VALUE(l_cursor, i, G_VALUE_LIST(i).new_value);
116: END IF;
117: END LOOP;
118:
119: DBMS_SQL.CLOSE_CURSOR(l_cursor);
115: DBMS_SQL.COLUMN_VALUE(l_cursor, i, G_VALUE_LIST(i).new_value);
116: END IF;
117: END LOOP;
118:
119: DBMS_SQL.CLOSE_CURSOR(l_cursor);
120: ELSE
121: RAISE FND_API.G_EXC_ERROR;
122: END IF;
123: EXCEPTION
121: RAISE FND_API.G_EXC_ERROR;
122: END IF;
123: EXCEPTION
124: WHEN OTHERS THEN
125: DBMS_SQL.CLOSE_CURSOR(l_cursor);
126: RAISE;
127: END get_record_snapshot;
128:
129: PROCEDURE log_changes(