十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、--Oracle 创建包 申明自定义游标类型
目前创新互联建站已为成百上千的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、东辽网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
create or replace package pk_Var is
type csr_tp is ref cursor;
end;
2、--Oracle 创建存储过程返回数据集合
CREATE OR REPLACE PROCEDURE pr_getdata(
v_empno VARCHAR2 , RC1 out PK_Var.csr_tp )
AS
sSQL varchar2(2000) ;
begin
sSQL := ' select * from emp where empno=v_empno' ;
Open RC1 for sSQL;
return;
end pr_getdata;
3、c#代码如下:
//创建oracle参数
OracleParameter[] sqlParme = new OracleParameter[2]
//参数1
sqlParme[0] = new OracleParameter("RC1", OracleType.Cursor);
sqlParme[0].Direction = ParameterDirection.Output;
sqlParme[1] = new OracleParameter("TKALA", OracleType.VarChar);
sqlParme[1].Direction = ParameterDirection.Input;
sqlParme[1].Value = aHoleOldNum;
//从存储过程中获取dataTable数据源
private DataTable DBExecStoredProcedure(string storeureName, OracleParameter[] sqlParme)
{
try
{
//使用微软的ORACLE访问接口
if (DBHelper.G_pDBConn.State == ConnectionState.Closed)//获取数据连接
DBHelper.G_pDBConn.Open();
OracleCommand oraCmd = new OracleCommand(storeureName, DBHelper.G_pDBConn);
oraCmd.CommandType = CommandType.StoredProcedure;
oraCmd.Parameters.Clear();//先清空
foreach (OracleParameter parme in sqlParme)
{
oraCmd.Parameters.Add(parme);
}
DataTable table = new DataTable();
DateTime BegTime = System.DateTime.Now;
OracleDataAdapter da1 = new OracleDataAdapter(oraCmd);//取出数据
da1.Fill(table);
return table;
}
catch (Exception ex)
{
MessageBox.Show("执行存储过程失败:"+ex.Message,"调试");
return null;
}
finally {
DBHelper.G_pDBConn.Close();
}
}