通过oracle dblink,怎么执行远程数据库的存储过程。或者说可以执行吗?怎么弄?

 我来答
longrenyingdc8ecb1
2014-12-27 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2352万
展开全部
能不能执行存储过程取决于你的dblink那个数据库的用户的权限,比如你这边的数据库用户A,是另外一个数据库的dblink用户,那么另外那个数据库的用户是利用A用户进行操作的。一般都是select,执行存储过程什么的,是看的A的权限。
不过我要梯形下,就选你insert,提示成功,可是实际并咩有插入,因为insert后,那个dblink的session就已经关闭了,commit并不能确认。所以我们一般是通过远程控制存储过程解决的这个问题。
cl_neu
2014-12-26 · 超过34用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:47.6万
展开全部
不行,弄不了。
追问
只能查询数据,不能对数据进行修改吗?
追答
dblink可以select,insert ,update,delete,前提是dblink的用户有这些权限,但是不能做ddl操作,如果存储过程里只是合法的dml操作也是可以通过dblink执行存储过程的。

给个测试例子:
远程服务器上:
create table test_db_link(id number,name varchar2(30));
create procedure p_test_db_link(vn_id number,vc_name varchar)
is
begin
insert into test_db_link values(vn_id,vc_name);
commit;
end;
begin
p_test_db_link(1,'a');
end;

本地创建dblink:
create database link TEST
connect to scott identified by tiger
using 'test';
--通过dblink删除表
delete from test_db_link@TEST
where id=1;
commit;
--通过dblink执行存储过程插入表
begin
p_test_db_link@TEST(2,'b');
end;
--此时查询结果
select * from test_db_link@TEST;
ID NAME
2 b
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式