执行下面的代码就会报错。
BOOL AOracleDatabase::GetOfflineMsg (CString strReceiveId , CString& strMsgList ,CString* pErrMsg )
{
// ----------------------------
_ParameterPtr parMsgList ;
parMsgList=pCommand->CreateParameter (_T("strMsgList"),adVarChar,adParamOutput,16000 ) ; // make sure the param
is large enoguh to retreive the data .
hr = pCommand->Parameters->Append (parMsgList ) ;
ASSERT( FAILED (hr)==FALSE ) ;
// ----------------------------
try
{
// ------------execution -------------------------------------
pCommand->ActiveConnection = m_pConnection ;
pCommand->CommandText =_T("sp_getdelaymsg1") ;
pCommand->CommandType = adCmdStoredProc ;
hr=pCommand->Execute (NULL,NULL,adCmdStoredProc ) ;
ASSERT(FAILED(hr)==FALSE ) ;
// -----------------------
_variant_t varMsgList ;
varMsgList = pCommand->Parameters->GetItem (_T("strMsgList"))->GetValue () ;
}create or replace procedure sp_getdelaymsg1 (strMsgList out varchar2 ) is
i int ;
begini := 0 ; loop
i:=i+1;
if i>2024 then
exit;
end if;
strMsgList := strMsgList + 'a' ; -- strMsgList 长度小的话就不会出错。
end loop;end sp_getdelaymsg1;
BOOL AOracleDatabase::GetOfflineMsg (CString strReceiveId , CString& strMsgList ,CString* pErrMsg )
{
// ----------------------------
_ParameterPtr parMsgList ;
parMsgList=pCommand->CreateParameter (_T("strMsgList"),adVarChar,adParamOutput,16000 ) ; // make sure the param
is large enoguh to retreive the data .
hr = pCommand->Parameters->Append (parMsgList ) ;
ASSERT( FAILED (hr)==FALSE ) ;
// ----------------------------
try
{
// ------------execution -------------------------------------
pCommand->ActiveConnection = m_pConnection ;
pCommand->CommandText =_T("sp_getdelaymsg1") ;
pCommand->CommandType = adCmdStoredProc ;
hr=pCommand->Execute (NULL,NULL,adCmdStoredProc ) ;
ASSERT(FAILED(hr)==FALSE ) ;
// -----------------------
_variant_t varMsgList ;
varMsgList = pCommand->Parameters->GetItem (_T("strMsgList"))->GetValue () ;
}create or replace procedure sp_getdelaymsg1 (strMsgList out varchar2 ) is
i int ;
begini := 0 ; loop
i:=i+1;
if i>2024 then
exit;
end if;
strMsgList := strMsgList + 'a' ; -- strMsgList 长度小的话就不会出错。
end loop;end sp_getdelaymsg1;
解决方案 »
- 如何用MFC和DirectShow编写一个远程教学系统
- 初学者,请教如何捕获网页的错误信息?
- 找不到acmdriver怎么办?
- 大家帮我看看这个 VC2010新建项目失败
- 高分征求意见:想做一个监控web/mail...程序
- 如何得知一个文件或文件夹正在被哪个程序打开 ?
- 98下怎么用钩子钩住ctrl+alt+del
- 急!如何在VC6的Win32 Dynamic-Link Library向导中调用MFC的资源?能实现吗?分不够可再加!
- 怎么建立switch风格的button?
- 如何只让声卡的一个通道发出声音
- 透明设置的问题!~~~~在线等
- 要求可以实现wpe的功能,截取一个进程的socket模拟发送,接收等.价格您说!
在LOOP之前加了strMsgList :=''后仍无济于事, 在PL/SQL中执行存储过程也会出现同样的错误。 另,上面的存储过程是ORACLE的。 谢谢。
varMsgList = pCommand->Parameters->GetItem (_T("strMsgList"))->GetValue () ;
时就报错,这时用于接收返回值的对象还没牵涉到CString