我在架构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?
答案 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。