TYPE v_id是table@dblink.column%type的表;

时间:2013-03-21 17:01:08

标签: oracle plsql

我在架构A中有表'test',而在架构B中我想运行测试查询。 所以创建了DBtest到A.test和dblink名称'dbl_test'。

现在,我可以查询为

select * from test@dbl_test;

但是当我尝试在带有游标的plsql过程块中使用TYPE v_id IS TABLE OF test@dbl_test.id%TYPE;时,它会发出错误,因为必须声明,而dbl_test是另一个数据库而无法访问。

当我查询select语句时,为什么不用TYPE?

2 个答案:

答案 0 :(得分:3)

将列放在@

之前
TYPE v_id IS TABLE OF test.id@dbl_test%TYPE;

答案 1 :(得分:1)

数据库链接用于链接两个数据库,而不是模式。

在您的情况下,目前还不清楚您是否确实需要数据库链接。你的两个模式是否在同一个数据库中?如果是,则只需要为模式B提供相关权限,并且他将能够引用模式A的数据类型。我认为GRANT SELECT ON A.TEST TO B应足以引用其数据类型。

编辑:实际上可以引用远程数据类型(我不知道!)请参阅@jonearles' answer