存储过程代码(用于查询,传入一个参数,返回一个查询结果)
create or replace procedure selecttypecount(p_name in varchar2,
original_count out number) as
begin select count(*)
into original_count
from (select nvl(b.realcasetype, a.casesubtype) as mycasesubtype
from alarminfo_perman a,
(select alarmid, realcasetype
from returninfo_test
where id in
(select max(id) from returninfo_test group by alarmid)) b
where a.id = b.alarmid(+)) y
where y.mycasesubtype = p_name;end selecttypecount;C#循环调用代码
OracleConnection conn = new OracleConnection(ClassVar.GlobalData.OracleConnect);
try
{
conn.Open();
for (int x = 0; x < id1.Length; x++)//id1是一个字符串数组
{
OracleCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "selecttypecount";
cmd.Parameters.Add("p_name", OracleType.VarChar).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
cmd.Parameters["p_name"].Value = id1[x];
cmd.Parameters.Add("original_count", OracleType.Number).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
string countNum = cmd.Parameters["original_count"].Value.ToString();
cell = cells.Add(x + 2, 3, countNum);//excel中的,这个不用管。设定第x+1行,第3例单元格的值
}
}
catch(Exception ex)
{}
finally
{
conn.Close();
}以前我是把sql语句代码直接放在C#中的,觉得很慢。于是改成用存储过程,但是发现最后用的时间差不多,速度没有什么提升,是什么原因。请大侠们赐教
create or replace procedure selecttypecount(p_name in varchar2,
original_count out number) as
begin select count(*)
into original_count
from (select nvl(b.realcasetype, a.casesubtype) as mycasesubtype
from alarminfo_perman a,
(select alarmid, realcasetype
from returninfo_test
where id in
(select max(id) from returninfo_test group by alarmid)) b
where a.id = b.alarmid(+)) y
where y.mycasesubtype = p_name;end selecttypecount;C#循环调用代码
OracleConnection conn = new OracleConnection(ClassVar.GlobalData.OracleConnect);
try
{
conn.Open();
for (int x = 0; x < id1.Length; x++)//id1是一个字符串数组
{
OracleCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "selecttypecount";
cmd.Parameters.Add("p_name", OracleType.VarChar).Direction = ParameterDirection.Input;//指明传入的参数是输入给oracle存储过程用的
cmd.Parameters["p_name"].Value = id1[x];
cmd.Parameters.Add("original_count", OracleType.Number).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
string countNum = cmd.Parameters["original_count"].Value.ToString();
cell = cells.Add(x + 2, 3, countNum);//excel中的,这个不用管。设定第x+1行,第3例单元格的值
}
}
catch(Exception ex)
{}
finally
{
conn.Close();
}以前我是把sql语句代码直接放在C#中的,觉得很慢。于是改成用存储过程,但是发现最后用的时间差不多,速度没有什么提升,是什么原因。请大侠们赐教
解决方案 »
- RMAN-06023: no backup or copy of datafile 6 found to restore
- oracle 存储过程 中返回记录集判断有无记录集如何处理
- oracle 远程备份数据库(linux系统)
- 大侠进:oracle汉字匹配(急)
- 求购中小型生产企业ERP软件
- 求一个常见问题的最优解决方法
- oracle9如何对数据进行还原
- oracle 按装和修复问题
- Oracle for Windows 95,这个是什么版的?
- 求助,访问dblink同义词时报,‘未找到远程数据库的连接说明’。
- sql问题
- ASP.NET oracle 语句在执行更新的时候没有任何反映不知道咱回事?
看看你的执行计划就知道了
具体优化还是要看执行计划,要么找你们DBA帮你看看语句