_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle调用外部程序C++常见问题解决

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

  创建的 library  

   createorreplacelibraryMYLIB
  as'D:installedoracleora92bintest1.dll';

  dll 中定义了一个方法 int fnTest1(void) 返回一个数字

  函数

   CREATEORREPLACEFUNCTIONmytest1RETURNDOUBLEPRECISIONAS
  LANGUAGECNAME"fnTest1"
  LIBRARYMYLIB
  PARAMETERS(RETURNDOUBLE);

  说明: 

   ORA-28575:unabletoopenRPCconnectiontoexternalprocedureagent

  解决:  

   1.tnsnames.ora需要配置EXTPROC_CONNECTION_DATA
  EXTPROC_CONNECTION_DATA=
  (DESCRIPTION=
  (ADDRESS_LIST=
  (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))
  (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
  )
  (CONNECT_DATA=
  (SID=PLSExtProc)
  (PRESENTATION=RO)
  )
  (CONNECT_DATA=
  (SID=ora10g)
  (PRESENTATION=RO)
  )
  )

  2. listener.ora 需要配置 (PROGRAM = extproc) 

   SID_LIST_LISTENER=
  (SID_LIST=
  (SID_DESC=
  (SID_NAME=PLSExtProc)
  (ORACLE_HOME=D:oracleproduct10.2.0db_1)
  (PROGRAM=extproc)
  )
  (SID_DESC=
  (SID_NAME=ora10g)
  (ORACLE_HOME=D:oracleproduct10.2.0db_1)
  )
  )
  ORA6521PL/SQL:Errormappingfunction

  解决:

   Note:297906.1 
  Cause 
  UsageofC++file(*.cpp)insteadofCfile(*.c)assourceforbuildingtheDLL 
  Thelibrarygeneratedcontainsthefunctionwiththedecoratednamewhichismangledbydefault 
  Solution 
  Toimplementthesolution,pleaseusethefollowingcodeforthe*.cppcode: 
  #ifdef__cplusplus 
  extern"C"{ 
  #endif 
  int__declspec(dllexport)square_of(intx) 
  { 
  return(x*x); 
  } 
  #ifdef__cplusplus 
  } 
  #endif


    希望这篇Oracle调用外部程序C++常见问题解决的文章能够对您有所帮助,如果您觉得这篇网站维护教程有用的话,别忘了推荐给您的朋友哦!如果您有好的经验方法,不妨拿出来和大家一起分享:假如每个人都拿出一个经验,那么我们都将额外的获取一堆他人的经验。
请记住本站永久域名:(黑客防线网安服务器维护方案维护基地)Www.Rongsen.Com.Cn
    黑客防线网安服务器维护方案本篇连接:http://shop.rongsen.com.cn/show-12013-1.html
网站维护教程更新时间:2012-03-23 00:28:07  【打印此页】  【关闭
0
顶一下
0
踩一下
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer