关于游标!! oracle的游标就是内存中的一块数据区域。你在c#中则是使用数据集的概念DataSet。你在c#中可以接收返回的结果集。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 听你这么说,根本就不用我们考虑"游标",已经有编程语言给我们实现了.是不是这样呀?我常用DataSet. 使用VC调用ORACLE的存储过程并返回记录 m_pConnection.CreateInstance("ADODB.Connection"); /******************连接数据库********************/ try { m_pConnection->ConnectionTimeout = 8; //连接SQL SERVER //m_pConnection->Open("Driver=SQL Server;Database=test;Server=127.0.0.1;UID=sa;PWD=;","","",adModeUnknown); //连接ACCESS2000 //m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=userinfo.mdb","","",adModeUnknown); //连接到oracleMSDAORA oraoledb.oracle m_pConnection->Open("Provider=oraoledb.oracle;Data Source=ep;User ID=zongdui;Password=zongdui;PLSQLRSet=1","","",adModeUnknown); } catch(_com_error e)///捕捉异常 { AfxMessageBox("数据库连接失败!"); return FALSE; } /**********************************************/上面是连接数据库,PLSQLRSet=1这个一定要有。 m_bNewUser = FALSE; m_pRecordset.CreateInstance("ADODB.Recordset"); try { //m_pRecordset->Open("SELECT name as username,old,photo as photo1 FROM test",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdText); _CommandPtr pCmdChange = NULL; // _ParameterPtr pprmByRoyalty = NULL; pCmdChange.CreateInstance(__uuidof(Command)); pCmdChange->CommandType = adCmdStoredProc; pCmdChange->CommandText = "pkg_test.get"; //Define Integer/variant. // pprmByRoyalty.CreateInstance(__uuidof(Parameter)); // VARIANT vtRoyalty; // vtRoyalty.vt = VT_I2; // vtRoyalty.iVal = 20; // pprmByRoyalty = pCmdChange->CreateParameter("param1",adInteger,adParamInput,sizeof(int),vtRoyalty); // pCmdChange->Parameters->Append(pprmByRoyalty); // pprmByRoyalty->Value = vtRoyalty; //Create Recordset by executing the command pCmdChange->ActiveConnection = theApp.m_pConnection; //Create Recordset by executing the command m_pRecordset->CursorType=adOpenStatic; m_pRecordset->LockType=adLockPessimistic; m_pRecordset = pCmdChange->Execute(NULL,NULL,adCmdStoredProc); //m_pRecordset->Open("{CALL (?{20})}",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdStoredProc); /**/ } catch (_com_error e) { AfxMessageBox(e.Description()); return FALSE; }这样就可以得到pkgtest.get返回的记录集 海量数据库更新慢怎么处理 oracle触发器里的enable/disable和valid/invalid状态 存贮过程编译后,保存在哪里呢?是不是服务器重启后,要重新编译? 请问这个SQL能实现吗? 又该如何写? 一个关于索引的问题! sql求助 电子政务系统要求支持多种数据库及多种操作系统,是否可行? oracle数据库是US7ASCII的字符集的问题!! 批量执行字段中的SQL语句? 有关于oracle锁表的问题 请问?如何将多个long raw型数值连接到一起 sql语句的问题!
我常用DataSet.
m_pConnection.CreateInstance("ADODB.Connection");
/******************连接数据库********************/
try
{
m_pConnection->ConnectionTimeout = 8;
//连接SQL SERVER
//m_pConnection->Open("Driver=SQL Server;Database=test;Server=127.0.0.1;UID=sa;PWD=;","","",adModeUnknown);
//连接ACCESS2000
//m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=userinfo.mdb","","",adModeUnknown);
//连接到oracleMSDAORA oraoledb.oracle
m_pConnection->Open("Provider=oraoledb.oracle;Data Source=ep;User ID=zongdui;Password=zongdui;PLSQLRSet=1","","",adModeUnknown); }
catch(_com_error e)///捕捉异常
{
AfxMessageBox("数据库连接失败!");
return FALSE;
}
/**********************************************/上面是连接数据库,PLSQLRSet=1这个一定要有。 m_bNewUser = FALSE;
m_pRecordset.CreateInstance("ADODB.Recordset");
try
{
//m_pRecordset->Open("SELECT name as username,old,photo as photo1 FROM test",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdText);
_CommandPtr pCmdChange = NULL;
// _ParameterPtr pprmByRoyalty = NULL; pCmdChange.CreateInstance(__uuidof(Command));
pCmdChange->CommandType = adCmdStoredProc;
pCmdChange->CommandText = "pkg_test.get";
//Define Integer/variant.
// pprmByRoyalty.CreateInstance(__uuidof(Parameter));
// VARIANT vtRoyalty;
// vtRoyalty.vt = VT_I2;
// vtRoyalty.iVal = 20;
// pprmByRoyalty = pCmdChange->CreateParameter("param1",adInteger,adParamInput,sizeof(int),vtRoyalty);
// pCmdChange->Parameters->Append(pprmByRoyalty); // pprmByRoyalty->Value = vtRoyalty;
//Create Recordset by executing the command
pCmdChange->ActiveConnection = theApp.m_pConnection; //Create Recordset by executing the command
m_pRecordset->CursorType=adOpenStatic;
m_pRecordset->LockType=adLockPessimistic;
m_pRecordset = pCmdChange->Execute(NULL,NULL,adCmdStoredProc);
//m_pRecordset->Open("{CALL (?{20})}",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockPessimistic,adCmdStoredProc);
/**/
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
return FALSE;
}这样就可以得到pkgtest.get返回的记录集