调用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,怎样才能运行存储过程,这个存储过程既没有输入,也没有输出
...全文
134 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-11-04 03:49
社区公告

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