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

c#通过ref cursor返回数据集报错
       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没问题的,有重谢!

------解决方案--------------------
代码没有错误,可能是驱动程序的BUG,毕竟微软已经将他的OracleClient标志为过时的,不推荐使用了。
建议你下载Oracle 11g的客户端驱动,用它的OPD.NET来连接操作数据库,下载地址:
http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html
这里提供的驱动程序可以直接支持VisualStudio,很不错的。