远程调用procedure可能会有一些缺陷!

看到pub上有人问如何远程调用过程,其实大部分人都会想到通过db link事实上也确实如此,不过我相信实际在使用的时候可能没有多少人这样用而是通常会使用另外的办法[@more@]

测试过程:

1.首先连上库db11查看并测试了事先创建好的proc_test

C:>sqlplus xys/manager

SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 4月 2 14:06:59 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select text from user_source WHERE name='PROC_TEST';

TEXT
--------------------------------------------------------------------------------

procedure proc_test
is
v_count int ;
begin
select count(*) into v_count from tt;
dbms_output.put_line(v_count);
end;

已选择7行。

SQL> set serveroutput on
SQL> exec proc_test;
4

PL/SQL 过程已成功完成。

SQL>

2.开另外一个session连上另外一个库

E:oracleproduct10.2.0db_1BIN>sqlplus xys/manager@orcl

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 4月 2 14:25:47 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> set serveroutput on

--db link是事先创建好的
SQL> select * from user_db_links;

DB_LINK USERNAME PASSWORD HOST CREATED
---------- ---------- ------------------------------ ---------- --------------
DBL XYS db11 01-4月 -08

--调用远程过程发现并不能输出数据,原因是远程过程proc_test是要在远程服务器上执行的;因此通过调用远程过程在某种情况下可能会存在一些缺陷。

SQL> exec proc_test@dbl;

PL/SQL 过程已成功完成。

3. 那么通常的做法是在本地创建过程来访问远程的对象(通常都是指表吧):

本地创建过程访问远程对象大致测试如下:

SQL> create or replace procedure proc_test
2 is
3 v_count int;
4 begin
5 select count(*) into v_count from tt@dbl;
6 dbms_output.put_line(v_count);
7 end;
8 /

过程已创建。

SQL> exec proc_test;
4

PL/SQL 过程已成功完成。

SQL>

4. 既然远程存在过程,而且过程最终肯定是在其所在的服务器上运行,那么我们可以直接连上远程数据库而执行过程,因此远程调用过程的意义实在不是很大。

SQL> connect xys/manager@db11
已连接。
SQL> set serveroutput on
SQL> exec proc_test;
4

PL/SQL 过程已成功完成。

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1001798/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/19602/viewspace-1001798/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值