Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION ConcurrencyCheck (
- pi_orarowscn_in IN NUMBER,
- pi_table_name IN VARCHAR2,
- pi_column_name IN VARCHAR2,
- pi_id IN NUMBER
- )
- RETURN BOOLEAN IS
- r_data_out_of_date BOOLEAN := false;
- ln_orarowscn_current NUMBER := 0;
- lv_sql VARCHAR2(300) := '';
- lv_column VARCHAR(20) := '';
- lv_table VARCHAR(20) := '';
- BEGIN
- SELECT table_name INTO lv_table from ALL_TABLES WHERE TABLE_NAME = pi_table_name;
- IF lv_table = '' THEN
- RAISE NO_DATA_FOUND;
- ELSE
- SELECT column_name INTO lv_column from USER_TAB_COLUMNS WHERE TABLE_NAME = pi_table_name AND COLUMN_NAME = pi_column_name;
- IF lv_column = '' THEN
- RAISE NO_DATA_FOUND;
- ELSE
- lv_sql := 'select ORA_ROWSCN from ' || pi_table_name || ' where ' || pi_column_name || ' = ' || pi_id || '';
- EXECUTE IMMEDIATE lv_sql INTO ln_orarowscn_current;
- IF ln_orarowscn_current <> pi_orarowscn_in THEN
- r_data_out_of_date := true;
- END IF;
- END IF;
- END IF;
- RETURN r_data_out_of_date;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- RAISE;
- WHEN OTHERS THEN
- RAISE;
- END ConcurrencyCheck;
- lv_sql := 'select ORA_ROWSCN from :table_name where :column_name = :id';
- EXECUTE IMMEDIATE lv_sql INTO ln_orarowscn_current USING pi_table_name, pi_column_name, pi_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement