c#通过ref cursor返回数据集报错

cimfa 2013-07-25 09:30:56
string connectionString = " User Id=lcm;Password=look2005;Data Source=CIMFA";
OracleConnection connection = new OracleConnection(connectionString);
OracleCommand cmd;
try
{
cmd = new OracleCommand();
connection.Open();
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "get_log.print_test";
if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}

OracleParameter p1 = new OracleParameter("z_name", OracleType.VarChar,15);
OracleParameter p2 = new OracleParameter("v_cur", OracleType.Cursor);
p1.Direction = ParameterDirection.Input;
p2.Direction = ParameterDirection.Output;
p1.Value = "CVSU";
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

}
通过包里的存储过程获取数据集,我在pl/sql里测试都是可以的,但是在c#里就是获取不了,老报错(报无效的column name,每次运行到da.Fill(ds)这里就异常)请高手们看看,上面是代码,pl/sql没问题的,有重谢!
...全文
293 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cimfa 2013-10-23
  • 打赏
  • 举报
回复
可能是我oracle客户端用的事低版本吧,所以有问题!
scandywater 2013-07-26
  • 打赏
  • 举报
回复
qldsrx 2013-07-25
  • 打赏
  • 举报
回复
拼写错误,应该叫ODP.NET,安装了那个驱动后,添加引用的时候能看到OracleAccess.dll,记得配置TNS。
qldsrx 2013-07-25
  • 打赏
  • 举报
回复
代码没有错误,可能是驱动程序的BUG,毕竟微软已经将他的OracleClient标志为过时的,不推荐使用了。 建议你下载Oracle 11g的客户端驱动,用它的OPD.NET来连接操作数据库,下载地址: http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html 这里提供的驱动程序可以直接支持VisualStudio,很不错的。
cimfa 2013-07-25
  • 打赏
  • 举报
回复
 是OUTPUT
全栈极简 2013-07-25
  • 打赏
  • 举报
回复
你参考一下我这篇博客,看有什么不同。 http://blog.csdn.net/guwei4037/article/details/9095387
机器人 2013-07-25
  • 打赏
  • 举报
回复
p1.Direction = ParameterDirection.Input; p2.Direction = ParameterDirection.Output; 确认一下这个 cursor 是 RETURN 的?还是 OUTPUT

110,525

社区成员

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

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

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