Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. FUNCTION ConcurrencyCheck (
  2. pi_orarowscn_in IN NUMBER,
  3. pi_table_name IN VARCHAR2,
  4. pi_column_name IN VARCHAR2,
  5. pi_id IN NUMBER
  6.  
  7.  
  8. )
  9. RETURN BOOLEAN IS
  10.  
  11. r_data_out_of_date BOOLEAN := false;
  12.  
  13. ln_orarowscn_current NUMBER := 0;
  14.  
  15. lv_sql VARCHAR2(300) := '';
  16. lv_column VARCHAR(20) := '';
  17. lv_table VARCHAR(20) := '';
  18.  
  19. BEGIN
  20.  
  21. SELECT table_name INTO lv_table from ALL_TABLES WHERE TABLE_NAME = pi_table_name;
  22.  
  23. IF lv_table = '' THEN
  24. RAISE NO_DATA_FOUND;
  25. ELSE
  26. SELECT column_name INTO lv_column from USER_TAB_COLUMNS WHERE TABLE_NAME = pi_table_name AND COLUMN_NAME = pi_column_name;
  27.  
  28. IF lv_column = '' THEN
  29. RAISE NO_DATA_FOUND;
  30.  
  31. ELSE
  32. lv_sql := 'select ORA_ROWSCN from ' || pi_table_name || ' where ' || pi_column_name || ' = ' || pi_id || '';
  33. EXECUTE IMMEDIATE lv_sql INTO ln_orarowscn_current;
  34.  
  35. IF ln_orarowscn_current <> pi_orarowscn_in THEN
  36. r_data_out_of_date := true;
  37. END IF;
  38.  
  39. END IF;
  40. END IF;
  41.  
  42. RETURN r_data_out_of_date;
  43.  
  44.  
  45.  
  46. EXCEPTION
  47. WHEN NO_DATA_FOUND THEN
  48. RAISE;
  49. WHEN OTHERS THEN
  50. RAISE;
  51.  
  52. END ConcurrencyCheck;
  53.  
  54. lv_sql := 'select ORA_ROWSCN from :table_name where :column_name = :id';
  55. 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