向大师致敬,向大师学习!!!

调用远程procedure的2个问题

上一篇 / 下一篇  2008-01-18 10:39:09 / 个人分类:数据库(oracle)

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

问题一:因在etl中,第一步就需要执行远程db上的一个procedure,是否可以在本地db的
        procedure上调用远程某一db上的procedure?
       
    答:二台db建dblink后,可在本地procedure中调用,用procedure_name@dblink_name 
        即可,在sqlplus中,直接用execprocedure_name@dblink_name
       
问题二:有多个远程db需要做上面的事情,是否可以在本地procedure中传递dblink参数,
        根据dblink参数来确定调用哪一个远程db的过程?
       
    答:可以,需要用到动态sql语句,在procedure中调用如下sql语句,execute immedia
        te  'select  ''procedure_name@'' ||'''v_dblink_name''  from dual';其中v_dblin
        k_name 为过程传递的参数,这样可以在一个过程中调用多个远程过程,不需要每一
        个远程过程用一个过程来调用。注意:直接用后面的语句会报错的Execute immedia
        te ‘procedure_name@’||v_dblink_name,因为动态sql要求 execute immediate 后
        面是一个sql语句的字符串。


TAG: 动态sql

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar