存储过程代码如下:
CREATE OR REPLACE PROCEDURE KEIT.sp_Ms_PhoneAuthCallbackEx
(
  Called         VARCHAR, 
  Calling     VARCHAR,   
  Cause          NUMBER,    
  Record         NUMBER,    
  RegionCode   VARCHAR,  
  CalledCallBack  OUT    NUMBER,
  CallingCallBack  OUT    NUMBER,  
  CalledOutBoud   OUT    NUMBER
)
IS
  PhoneType NUMBER;
  Result    NUMBER;
  Hour      NUMBER;
  tmprecCount  NUMBER;
BEGIN
  tmprecCount := 0;
  CallingCallBack := 2;
  CalledCallBack := 0;
  CalledOutBoud := 1;
END;
/调用代码如下:
int DB_AuthCallbackEx(char* pRegionCode, char *pCalled, char *pCalling, int nCause, int nRecord, int *pCalledCallBack, int *pCallingCallBack, int  *pCalledOutBoud)
{
int Result = 0;
char * call_sql="begin sp_Ms_PhoneAuthCallbackEx("
":Called<char[21],in>,"
":Calling<char[21],in>,"
":Cause<int,in>,"
":Record<int,in>,"
":RegionCode<char[21],in>,"
":CalledCallBack<int,out>,"
":CallingCallBack<int,out>,"
":CalledOutBoud<int,out>);end;";
try
{
otl_stream o(strlen(call_sql), call_sql, db);

o << pCalled << pCalling << nCause << nRecord << pRegionCode;

o.set_commit(0);

o>>*pCalledCallBack;
o>>*pCallingCallBack;
o>>*pCalledOutBoud;

}
catch(otl_exception& p)

return -1;

return Result;
}执行之后根本不会输出,就是
                o>>*pCalledCallBack;
o>>*pCallingCallBack;
o>>*pCalledOutBoud;
这三个东西执行了,结果没输出来,怎么回事???在线等!!!

解决方案 »

  1.   

    没做过OTL的方式,FYI:
    http://blog.vckbase.com/bruceteen/archive/2004/12/30/2373.aspx
      

  2.   

    在本机试过,似乎是OTL的问题。我本人比较排斥这个库。这个错误可以用更简单的存储过程来模拟重现。
      

  3.   

    呵呵,已经答了啊,应该是OTL的错。
    你完全可以向OTL的maillist上提问或者发bug
      

  4.   

    进入下边的页面:
    http://otl.sourceforge.net/otl4_bug_report.htm
      

  5.   

    1.tmprecCount := 0;   ---没起任何作用啊?!2.此KEIT.sp_Ms_PhoneAuthCallbackEx存储过程内变量没有和Oracle数据库中的任意表发生关系啊?!3.不明白为什么要用存储过程?好象用C/C++ code即可解决。