oracle里的存储过程 为什么在C#里调用ORACLE的存储过程那么麻烦?不明白为什么要写包头及包体和游标。为何不像SQL SERVER一样???感觉到ORACLE里写存储过程没有在SERVER里写的爽。有没有人举个简单的C#调用ORACLE存储过程的例子? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 OracleConnection conn = new OracleConnection(Connstr); conn.Open(); OracleTransaction tx = conn.BeginTransaction(); OracleCommand cmd = conn.CreateCommand(); cmd.Transaction = tx; cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;"; cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value; tempLob.BeginBatch(OracleLobOpenMode.ReadWrite); tempLob.Write(picValue,0,picValue.Length); tempLob.EndBatch(); cmd.Parameters.Clear(); cmd.CommandText = "PKG_PEPWEB_TransgressMGR.AddTransgressInfo"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add( new OracleParameter( "AHPZL",OracleType.VarChar,2 ) ).Value = m_HPZL; cmd.Parameters.Add( new OracleParameter( "AHPHM",OracleType.VarChar,15 ) ).Value = m_HPHM; cmd.Parameters.Add( new OracleParameter( "AWFSJ",OracleType.DateTime ) ).Value = DateTime.Parse(m_WFSJ); cmd.Parameters.Add( new OracleParameter( "ARoadID",OracleType.VarChar,10 ) ).Value = m_RoadID; cmd.Parameters.Add( new OracleParameter( "Awzxwno",OracleType.VarChar,200 ) ).Value = m_WFXW; cmd.Parameters.Add( new OracleParameter( "AJCSD",OracleType.Number,4 ) ).Value = Decimal.Parse(m_JCSD); cmd.Parameters.Add( new OracleParameter( "APICNAME",OracleType.VarChar,200 ) ).Value= m_PICNAME; cmd.Parameters.Add( new OracleParameter( "ACARSTATE",OracleType.VarChar,1 ) ).Value = m_CARSTATE; cmd.Parameters.Add( new OracleParameter( "AJBR",OracleType.VarChar,30 ) ).Value = m_JBR; cmd.Parameters.Add( new OracleParameter( "APHOTO", OracleType.Blob ) ).Value = tempLob; OracleParameter or=new OracleParameter("FLAG", OracleType.Int32); or.Direction = ParameterDirection.Output; cmd.Parameters.Add( or ); try { cmd.ExecuteNonQuery(); tx.Commit(); } catch (OracleException ex) { s=ex.Message; throw ex; } if ( s!=null) { } return (int)or.Value; //这个是使用GotDotNet.ApplicationBlocks.Data.Oracle调用oracle存储过程的public DataSet GetRoadALL() { DataSet ds=new DataSet(); adoHelper.GetSpParameterSet(Connstr,"PKG_PEPWEB_Road.GetRoadALL"); OracleParameter[] oraParameter=new OracleParameter[1]; oraParameter[0]=new OracleParameter("Rst",OracleType.Cursor); oraParameter[0].Direction=ParameterDirection.Output; ds=adoHelper.ExecuteDataset(Connstr,"PKG_PEPWEB_Road.GetRoadALL",oraParameter); return ds; } 请问GotDotNet.ApplicationBlocks.Data.Oracle组件在哪里下载和怎么用?存储过程返回数据集是不是一定写在包体里才能实现? oracle数据处理问题 存储过程commit问题 求一sql语句!! 关于UNDOTBS01.DBF 跪求:此alertSID.LOG日志分析 高分!寻找oracle8安装文件 oracle在普通pc机器上能不能跟Ms Server SQL抗衡 如何用SQL语句判断某张表是否存在? 在一个已经存在的表中增加一列如何写SQL语句? controlfile文件丢失了,如何恢复呢?帮帮忙!! ★百分快速结贴|最简单的问题★=======在线 oracle登录sqlplus遇到问题
conn.Open();
OracleTransaction tx = conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = tx;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(picValue,0,picValue.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "PKG_PEPWEB_TransgressMGR.AddTransgressInfo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( new OracleParameter( "AHPZL",OracleType.VarChar,2 ) ).Value = m_HPZL;
cmd.Parameters.Add( new OracleParameter( "AHPHM",OracleType.VarChar,15 ) ).Value = m_HPHM;
cmd.Parameters.Add( new OracleParameter( "AWFSJ",OracleType.DateTime ) ).Value = DateTime.Parse(m_WFSJ);
cmd.Parameters.Add( new OracleParameter( "ARoadID",OracleType.VarChar,10 ) ).Value = m_RoadID;
cmd.Parameters.Add( new OracleParameter( "Awzxwno",OracleType.VarChar,200 ) ).Value = m_WFXW;
cmd.Parameters.Add( new OracleParameter( "AJCSD",OracleType.Number,4 ) ).Value = Decimal.Parse(m_JCSD);
cmd.Parameters.Add( new OracleParameter( "APICNAME",OracleType.VarChar,200 ) ).Value= m_PICNAME;
cmd.Parameters.Add( new OracleParameter( "ACARSTATE",OracleType.VarChar,1 ) ).Value = m_CARSTATE;
cmd.Parameters.Add( new OracleParameter( "AJBR",OracleType.VarChar,30 ) ).Value = m_JBR;
cmd.Parameters.Add( new OracleParameter( "APHOTO", OracleType.Blob ) ).Value = tempLob;
OracleParameter or=new OracleParameter("FLAG", OracleType.Int32);
or.Direction = ParameterDirection.Output;
cmd.Parameters.Add( or );
try
{
cmd.ExecuteNonQuery();
tx.Commit();
}
catch (OracleException ex)
{
s=ex.Message;
throw ex;
}
if ( s!=null)
{
}
return (int)or.Value;
public DataSet GetRoadALL()
{
DataSet ds=new DataSet();
adoHelper.GetSpParameterSet(Connstr,"PKG_PEPWEB_Road.GetRoadALL");
OracleParameter[] oraParameter=new OracleParameter[1];
oraParameter[0]=new OracleParameter("Rst",OracleType.Cursor);
oraParameter[0].Direction=ParameterDirection.Output;
ds=adoHelper.ExecuteDataset(Connstr,"PKG_PEPWEB_Road.GetRoadALL",oraParameter);
return ds;
}