DBLink小结

今天和营帐测试有价卡接口,用到了DBLink,现把当时遇到的一些问题总结如下:

环境
三台机器:ORACLE服务端1(简称S1),ORACLE服务器端2(简称S2),客户端1(简称C1)。C1通过客户端连上S1,然后建立个连接S2的DBLink,以便执行S2下的几个存储过程

[@more@]

1、需要在S1机器下建立S2的tns,而不能在机器C1下建S2的tns;

2、创建语句
S2:
create user yzusr identified by yzusr;

grant connect,resource to yzusr;

grant execute on ynjfk.online_cardactive to yzusr; --C1需要访问的存储过程

C1:
create database link dblink_mydb connect to yzusr identified by yzusr using 'mydb';

说明:据说如果S2上参数global_names设置为TRUE,那么dblink的名称应和远程ORACLE服务名一样才行。
查看方式:在S2上 show parameter global_names

3、C1执行S2上存储过程
online_cardactive的参数说明:
Online_Cardactive(
v_begincard IN VARCHAR2, --开始卡顺序号
v_endcard IN VARCHAR2, --结束卡顺序号
v_operaterid IN VARCHAR2, --操作员id
v_operatetime IN VARCHAR2, --操作时间 标准格式:2006-08-22 10:10:10
v_result OUT INTEGER, --操作结果
v_remarks OUT VARCHAR2 --操作结果中文说?
)
调用:以在sql*plus中调用举例
SQL>set serveroutput on
SQL>var ret number
SQL>var retname varchar2
SQL>exec ynjfk.online_cardactive@dblink_mydb('087100000005','087100000005','021205','2007-06-07 12:55:10',:ret,:retname);

查看调用结果:
SQL>print ret;
SQL>print retname;

SQL>select :ret,:retname from dual;

说明:如果在上面的调用中S2不想让C1知道该存储过程的schema,可以在S2中为过程online_cardactive建立一个synonym
create public synonym ONLINE_CARDACTIVE for YNJFK.ONLINE_CARDACTIVE

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

转载于:http://blog.itpub.net/9896745/viewspace-917656/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值