1、建立包
create or replace package pakget is
  type outcursor is ref cursor;
  function outds(intabid in number) return outcursor;
end pakget;
2、包体
create or replace package body pakget is
 function  outds(intabid in number) return outcursor is
   outr outcursor;
  begin
   open outr for select * from myid.systab where tabid=intabid;
    return outr;
  end outds;
end pakget;
3、c#代码
 OracleConnection cn=new OracleConnection(ConfigurationSettings.AppSettings["CnStr"]); 
 OracleCommand cmd = new OracleCommand("pakget.outds",cn);
try
{
  cmd.CommandType=CommandType.StoredProcedure;
OracleParameter par1=new OracleParameter("intab",OracleType.Number,6);
par1.Direction=ParameterDirection.Input;
par1.Value ="0";
OracleParameter par2=new OracleParameter("outds",OracleType.Cursor); 
par2.Direction=System.Data.ParameterDirection.ReturnValue; 
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
cn.Open();
cmd.ExecuteNonQuery(); 
cn.Close();
}
catch (Exception  w )
{
  Label2.Text =w.Message; 
}4、错误提示
parameter 'outds': OracleType.Cursor parameters may only be ParameterDirection.Output parameters.
那位能帮忙分析一下。小弟是游击程序员所以不专业。我再网上看到的代码能返回一个字符串,我参照着修改了一下,希望这段代码能返回数据集。