日期:2014-05-16 浏览次数:20441 次
今天搞了整一个上午。R12 Demo VIS中查询JTF.JTF_RS_SALESREPS有数据,但是查APPS.JTF_RS_SALESREPS_MO_V死活没数据。 看了下object属性: SELECT * FROM all_objects WHERE object_name LIKE 'JTF_RS_SALESREPS%'; APPS.JTF_RS_SALESREPS_MO_V是JTF.JTF_RS_SALESREPS的同义词,想是编译出的问题,开始重编: ALTER SYNONYM apps.JTF_RS_SALESREPS_MO_V COMPILE; 结果仍然没数据。。。上了metalink没找到结果。下午在一个帖子里无意中找到了类似的求助,解决方法很直接: DROP SYNONYM JTF_RS_SALESREPS_MO_V; CREATE SYNONYM JTF_RS_SALESREPS_MO_V FOR jtf.JTF_RS_SALESREPS; Bingo!~~问题解决了,看到数据了。。。 具体原因上边说是原来的table被drop重建后造成的失效。。要重建synonym。残念~万恶的Oracle! 具有MOAC的SYNONYM-JTF_RS_SALESREPS_MO_V(jtf_rs_salesreps的同义词,加了一个POLICY,实现MOAC)
好像在oracle erp 中是很常见的.... 例如: apps用户的RA_CUST_TRX_TYPES 和 RA_CUST_TRX_TYPES_ALL都是AR下RA_CUST_TRX_TYPES_ALL的同义词.但是RA_CUST_TRX_TYPES 不能查询出数据,而RA_CUST_TRX_TYPES_ALL可以查询出数据. 为什么同样的同义词,会出现这样的情况? oracle 是怎么作到的? 现在,我们这边的老大给出了答案,确实这样的同义词和我们之前的是不一样的,数据和环境有关系. 初始化语句为 BEGIN FND_GLOBAL.apps_initialize(user_id => 1116, -- resp_id => 50512, -- resp_appl_id => 222, -- security_group_id => null , server_id => null); MO_GLOBAL.INIT('SQLAP'); mo_global.set_policy_context('A',null); end; mo_global.init('ONT');
declare v number(20); begin mo_global.init('ONT'); select salesrep_id into v from JTF_RS_SALESREPS_MO_V where rownum = 1; dbms_output.put_line(v); end; 能打印出数据,原来需要写一个mo_global.init('ONT');