有谁玩过Cjava 调用存储过程程并输出结果集

存储过程输出和输入和返回值的使用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
存储过程输出和输入和返回值的使用
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢调用插入数据的存储过程:
// 调用存储过程来插入一条记录
BOOL CDBTestAppDlg::InsertRecord()
CAdoParameter param1, param2, param3;
if(ConnTODB())
comm.SetConnection(m_pConnection);
param1.SetSize(20);
param1.SetName("C_Name");
param1.SetDirection(adParamInput);
param1.SetType(adVarChar);
// varchar2
param1.SetValue((CString)"hello113"); // 这里必须用类型转换,默认的参数类型为bool,所以转换会出错
comm.Append(param1.GetParameter());
param2.SetName("C_Age");
param2.SetDirection(adParamInput);
param2.SetType(adInteger);
// Integer
param2.SetValue(21);
comm.Append(param2.GetParameter());
param3.SetName("C_ExeTime");
param3.SetDirection(adParamInput);
param3.SetType(adVarChar);
// varchar2
param3.SetValue((CString)"");
comm.Append(param3.GetParameter());
comm.SetCommandText("Proc_Insert");
comm.SetCommandType(adCmdStoredProc);
comm.Execute();
MessageBox("Procedure execute success!", "执行成功", MB_OK | MB_ICONINFORMATION);
return TRUE;
catch (CException* e)
char errorMessage[256];
e-&GetErrorMessage(errorMessage, 255);
MessageBox(errorMessage);
return FALSE;
其中连数据库的函数为:
BOOL CDBTestAppDlg::ConnTODB()
BOOL nResult = TRUE;
if (m_pConnection == NULL)
m_pConnection = new CAdoC
if (!m_pConnection-&CreateInstance())
MessageBox("创建数据库实例失败");
delete m_pC
m_pConnection = NULL;
return FALSE;
if (m_pConnection-&IsOpen())
m_pConnection-&Close();
m_pConnection-&SetConnectTimeOut(2);
m_pRecordSet.SetAdoConnection(m_pConnection);
if (!m_pConnection-&Connection(m_sProvider))
// MessageBox("连接业务数据库失败");
nResult = FALSE;
// MessageBox("连接业务数据库成功");
为了返回结果集,首先要建立一个包,再建立一个包体,代码如下:
CREATE OR REPLACE Package pkg_GetResult
Type myResult is REF CURSOR;
-- 定义返回值类型
Procedure getResult(age number, pResult out myResult);
-- 声明pResult为输出的结果集变量
end pkg_GetR
CREATE OR REPLACE Package Body pkg_GetResult
Procedure getResult(age number, pResult out myResult)
sqlstr varchar2(200);
if age = 0 then
open pResult for Select C_ID, C_Name, C_Age, C_InTime, C_Salary, C_ExeTime from T_T
sqlstr := 'Select C_ID, C_Name, C_Age, C_InTime, C_Salary, C_ExeTime from T_Test where C_Age=:w_age';
open pResult
end pkg_GetR
在vc中调用这个包中的存储过程,调用方法:包名.存储过程名(参数1, 参数2, ...):
BOOL CDBTestAppDlg::GetResult(CString ProcName, int age)
if(ConnTODB())
sql.Format("{call %s(%d)}", ProcName, age); // 调用包中的存储过程:packageName.procedureName(参数1,参数2...)
TRACE(sql + "\n");
m_pRecordSet.Open(sql, adCmdText, adOpenStatic, adLockReadOnly);
TRACE("Procedure execute success!");
while(!m_pRecordSet.IsEOF())
CString name,
m_pRecordSet.GetCollect("C_Name", name);
m_pRecordSet.GetCollect("C_Age", age);
MessageBox("name = " + name + ", age = " + age);
// TRACE("name = " + name + ", age = " + age);
m_pRecordSet.MoveNext();
return TRUE;
catch (CException* e)
char errorMessage[256];
e-&GetErrorMessage(errorMessage, 255);
MessageBox(errorMessage);
return FALSE;
return FALSE;
通过CRecordSet的Open()方法可以返回结果集,再进行遍历。这里用到了一些自定义的函数,因为相对简单,所以未给出。这里的调用是adCmdText,而不是adCmdStoredProc
阅读(...) 评论()数据库第6章习题参考答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据库第6章习题参考答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 mysql 调用存储过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信