日期:2014-05-17  浏览次数:20730 次

oledb连接数据库调用Oracle数据库函数的问题
本帖最后由 davyyao555 于 2013-06-05 22:03:31 编辑
代码如下(数据库连接的地方就不写了...):
oledbCommand ocd=new oledbCommand();
ocd.Connection=连接;
ocd.CommandType=CommandType.StoredProcedure;
ocd.CommandText = "函数名";
ocd.Parameters.Add("DATA",OleDbType.VarChar).Value="123";
ocd.Parameters.Add("RESULT",OleDbType.VarChar);
ocd.Parameters["RESULT"].Direction = ParameterDirection.ReturnValue;
ocd.ExecuteNonQuery();

此函数只有一个输入变量DATA,这样执行的时候会报:
呼叫“函数”时,使用的引用数目或引数类型错误,pls-00306

但如果换成Oracle的连接方式,就不会报错,难道Oledb和Oracle在调用Oracle函数不同?
找了好半天都找不到问题在哪,求大神相助!

------解决方案--------------------
特别要注意的是,函数的参数的返回类型要指定,另外就是COMMAND类型也需要指定,另外和一般的存储过程没什么差别