ADO调用oracle存储过程问题~~~在线等
代码如下,请高手指点~~
int ADOConn(char* sfz)
{
CoInitialize(NULL);
_ConnectionPtr conn;
HRESULT hr;
hr = conn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
return -1;
try
{
conn->Open("Provider=OraOLEDB.Oracle.1;Password=nct;Persist Security Info=True;User ID=phsb;Data Source=devdb","","",NULL);
}
catch(_com_error e)
{
return -1;
}
_CommandPtr comm;
HRESULT hr1 = comm.CreateInstance(__uuidof(Command));
if(FAILED(hr1))
{
return -1;
}
comm->ActiveConnection = conn; //ADO连接
comm->CommandText="sip_public.f_get_lsfz"; //存储过程名
comm->Parameters->Append(comm->CreateParameter("result",adBSTR,adParamOutput,3000,""));
comm->Parameters->Append(comm->CreateParameter("sfz",adBSTR,adParamInput,3000,"XXXX"));
comm->Execute(NULL,NULL,adCmdStoredProc); //执行到这里出错
//comm->Parameters->GetItem("result")->Value.bstrVal; //取返回值
//如何把返回值赋给变量sfz
CoUninitialize();
return 1;
}
问题点数:50、回复次数:3Top
1 楼happyparrot(快乐鹦鹉)回复于 2005-08-18 13:25:10 得分 25
comm->CommandType = adCmdStoredProc;
用try...catch(_com_error &e)捕捉一下异常,看看报什么错。
Top
2 楼masterz(www.fruitfruit.com)回复于 2005-08-18 13:52:47 得分 25
study the following code snippet
http://www.fruitfruit.com/vc/database/oracle.cppTop
3 楼cgfhz(→.Net^_^)回复于 2005-08-18 16:10:30 得分 0
谢谢楼上两位~呵呵~我改了后执行是成功了,但取不到返回值~在数据库中直接执行是有返回值的,但在VC中返回值是空的!如何解决?
comm->ActiveConnection = conn; //ADO连接
comm->CommandType = adCmdStoredProc;
comm->CommandText="sip_public.f_get_lsfz"; //存储过程名
comm->Parameters->Append(comm->CreateParameter("result",adBSTR,adParamOutput,3000,""));
comm->Parameters->Append(comm->CreateParameter("sfz",adBSTR,adParamInput,3000,"XXXX"));
comm->Execute;
CString test=comm->Parameters->GetItem("result")->Value.bstrVal; //取返回值
strcpy(sfz, test); //返回值赋给变量sfz,返回为空??Top




