ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 调用远程procedure的2个问题

调用远程procedure的2个问题

原创 Linux操作系统 作者:oracle_kai 时间:2008-01-18 10:39:09 0 删除 编辑

调用远程procedure2个问题

昨天小组的开发人员在做一个项目的etl时候,问了关于调用远程procedure的问题,如下:

问题一:因在etl中,第一步就需要执行远程db上的一个procedure,是否可以在本地db

procedure上调用远程某一db上的procedure

       

答:二台dbdblink后,可在本地procedure中调用,用procedure_name@dblink_name 

可,在sqlplus中,直接用exec procedure_name@dblink_name

   :dblink的用户要拥有execute 该过程的权限

       

问题二:有多个远程db需要做上面的事情,是否可以在本地procedure中传递dblink参数,

        根据dblink参数来确定调用哪一个远程db的过程?

       

答:可以,需要用到动态sql语句,在procedure中调用如下sql语句,

     Execute Immediate  'select '' procname@' ||v_dblink ||''' from dual' Into v_sql;

     Execute Immediate 'begin '||v_sql||'; end;';

 

     或者干脆不要上面的第一条sql拼装语句,直接用下面的一条语句

     Execute Immediate 'begin '||' procname @' ||v_dblink||'; end;';

    

     注意:如果直接用后面的语句会报错的

Execute   immediate  ‘procedure_name@’||v_dblink_name

 

     注意:dblink的用户要拥有execute 该过程的权限

 

    其中v_dblink 为过程传递的参数,procname为实际的过程名,这样可以再写一个过

程来调用这个过程,通过不同的dblink参数来调用不同地方的过程,这样既可以使代码

统一,也满足了基本的模块化需求。

 

 

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

上一篇: 一次sql优化小记
请登录后发表评论 登录
全部评论

注册时间:2007-12-20

  • 博文量
    48
  • 访问量
    175140