调用Oracle存储过程问题

wzs_wzs123 2004-11-04 03:49:56
//判断连接是否关闭,关闭则打开
if(con.State==System.Data.ConnectionState.Closed)
con.Open();
int count=0;
OdbcCommand command=new OdbcCommand();
command.Connection=con;
try
{
string sql="exec longoil.test";
command.CommandType=System.Data.CommandType.StoredProcedure;
command.CommandText=sql;
count=command.ExecuteNonQuery();
con.Close();
}
catch(Exception e)
{
if(con!=null)
con.Close();
throw e;
}
运行这段程序时抱ERROR [42000] [Oracle][ODBC]Syntax error or access violation.
我用的Oracle9i,怎样才能运行存储过程,这个存储过程既没有输入,也没有输出
...全文
156 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
reformer 2004-11-04
  • 打赏
  • 举报
回复
//判断连接是否关闭,关闭则打开
if(con.State==System.Data.ConnectionState.Closed)
con.Open();
int count=0;
OdbcCommand command=new OdbcCommand();
command.Connection=con;
try
{
string sql="exec longoil.test";
command.CommandType=System.Data.CommandType.StoredProcedure;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//这个不用就行了。因为上面的SQL其实是SQL语句,不是存储过程。
command.CommandText=sql;
count=command.ExecuteNonQuery();
con.Close();
}
catch(Exception e)
{
if(con!=null)
con.Close();
throw e;
}
einsteincao 2004-11-04
  • 打赏
  • 举报
回复
没有输入和输出

使用ExcuteNonQuery方法
einsteincao 2004-11-04
  • 打赏
  • 举报
回复
.NET中应用

public DataSet Bill_Point_No(string CUSTOMER_ID)//ok
{
DataSet dataset = new DataSet();
Hashtable HT=new Hashtable();
HT.Add("P_CUSTOMER_ID",CUSTOMER_ID);
if(RunProcedure("Re_CURSOR",OracleType.Cursor,ref dataset,HT,bmsOracleUser+".YY_PKG_BILL_POINT_NO.BILL_POINT_NO",bmsOracleConnectionString))
{
;
}
else
{
dataset=null;
}
return dataset;
}

public bool RunProcedure(string ReturnParameter,OracleType ParamType,ref DataSet Dataset,Hashtable HT ,string ProcedureName,string OracleConnection)
{
System.Data.OracleClient.OracleConnection dsconnection = new System.Data.OracleClient.OracleConnection(OracleConnection);
System.Data.OracleClient.OracleCommand dacommand = new System.Data.OracleClient.OracleCommand(ProcedureName,dsconnection);
dsconnection.Open();
dacommand.CommandType=CommandType.StoredProcedure;
IDictionaryEnumerator Enumerator;
Enumerator = HT.GetEnumerator();
object Value=null;
OracleParameter OracleParam;
OracleParam = dacommand.Parameters.Add(new OracleParameter(ReturnParameter,ParamType));
OracleParam.Direction = ParameterDirection.Output;
while(Enumerator.MoveNext())
{
Value = Enumerator.Value;
OracleParam=dacommand.Parameters.Add(new OracleParameter(Enumerator.Key.ToString(), Value));
}
OracleDataAdapter ODAdapter=new OracleDataAdapter(dacommand);
try
{
ODAdapter.Fill(Dataset);
return true;
}
catch(System.Exception e)
{
e.ToString();
return false;
}
finally
{
HT.Clear();
dacommand.Parameters.Clear();
dsconnection.Close();
}
}

einsteincao 2004-11-04
  • 打赏
  • 举报
回复
http://www.weiw.com/article/list.asp?id=649

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧