ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转]Cache Pattern

[转]Cache Pattern

原创 Linux操作系统 作者:kawontony 时间:2013-09-05 09:32:22 0 删除 编辑
转自:http://blog.csdn.net/pan_tian/article/details/8633238
 
Oracle EBS中,如果获取Item,Organization等基础数据的信息。你可以写SQL来查,这种做法的不好处就是,在不同Procedure或者Function中,你可能需要写多次类似的SQL来取值,造成代码的冗余。EBS标准的做法是,通过Cache模式来时缓存需要的信息。

以获取Organization为例,系统中标准的做法是:
  1. l_return_value := INV_CACHE.set_org_rec(p_organization_id);
  2. IF NOT l_return_value THEN
  3. RAISE fnd_api.g_exc_unexpected_error;
  4. END IF;
  5. l_negative_inv_receipt_code := INV_CACHE.org_rec.negative_inv_receipt_code;
再看INV_CACHE.set_org_rec的定义
  1. CREATE OR REPLACE PACKAGE inv_cache AUTHID CURRENT_USER AS
  2. ...
  3. org_rec mtl_parameters%ROWTYPE;
  4. ...
  5. END inv_cache;
  6. /
  7. CREATE OR REPLACE PACKAGE BODY inv_cache AS
  8. ...
  9. FUNCTION set_org_rec
  10. (
  11. p_organization_id IN NUMBER
  12. ) RETURN BOOLEAN IS
  13. l_return_val BOOLEAN := FALSE;
  14. BEGIN
  15. IF org_rec.organization_id = p_organization_id THEN
  16. l_return_val := TRUE;
  17. ELSE
  18. SELECT *
  19. INTO org_rec
  20. FROM MTL_PARAMETERS
  21. WHERE organization_id = p_organization_id;
  22. pt_debug('p_organization_id:'||p_organization_id);
  23. l_return_val := TRUE;
  24. END IF;
  25. RETURN l_return_val;
  26. EXCEPTION
  27. WHEN NO_DATA_FOUND THEN
  28. RETURN l_return_val;
  29. WHEN OTHERS THEN
  30. RETURN l_return_val;
  31. END set_org_rec;
  32. ...
  33. END inv_cache;
你可以用类似Cache Pattern来获取item,sub,move order,transaction type等各种需要的信息,代码清晰,并减少不必要的冗余。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24627116/viewspace-772187/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-17

  • 博文量
    164
  • 访问量
    362792