eygle.com   eygle.com
eygle.com  
 
eygle.com - 留言簿 - 回复留言 - Powered by eYgLe.Com
返回留言簿
回 复 留 言
留言ID:
留言原文:
To:
  11g( 11.2.0.1.0)的A和B两个DB,B的procedure通过db_link参考A的table,当A table add column后,B的procedure相应也增加了这个column,但无法编译成功。需B DB执行flush shared_pool后才能编译成功。

请问有遇到过或要怎样解决?谢谢。

1)A DB:

ADB>CREATE TABLE T1 (C1 NUMBER);

 表已创建。

2)B DB

BDB>CREATE OR REPLACE PROCEDURE SP_T1 IS
  2LV_C1 NUMBER;
  3BEGIN
  4SELECT C1 INTO LV_C1 FROM T1@ADB;
  5* END;
  6/

 过程已创建。

3)ADB>ALTER TABLE T1 ADD C2 NUMBER;

 表已更改。

4)BDB>CREATE OR REPLACE PROCEDURE SP_T1 IS
  2LV_C1 NUMBER;
  3LV_C2 NUMBER;
  4BEGIN
  5SELECT C1,C2 INTO LV_C1,LV_C2 FROM T1@ADB;
  6* END;
SQL> /
警告: 创建的过程带有编译错误。


SQL> SHOW ERR
PROCEDURE SP_T1 出现错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/1PL/SQL: SQL Statement ignored
5/11 PL/SQL: ORA-00904: "C2": 标识符无效


SQL> ALTER PROCEDURE SP_T1 COMPILE;


警告: 更改的过程带有编译错误。


SQL> ALTER SYSTEM FLUSH SHARED_POOL;


系统已更改。


SQL> ALTER PROCEDURE SP_T1 COMPILE;


过程已更改。

 

From: yoyo
2013.02.15 20:15
管理密码: 请输入管理密码, 否则无法回复.
斑竹昵称:
信息图标: ( 随机 )


BB 代码:
内容:

如果想删除回复, 请点击最下面的删除回复按钮.
删 除 回 复
管理密码: 请输入管理员密码, 只有版主才能删除回复.
Copyright © 2003~2012 eygle.com All Rights Reserved.
Powered by: www.eygle.com