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.
那位能帮忙分析一下。小弟是游击程序员所以不专业。我再网上看到的代码能返回一个字符串,我参照着修改了一下,希望这段代码能返回数据集。
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.
那位能帮忙分析一下。小弟是游击程序员所以不专业。我再网上看到的代码能返回一个字符串,我参照着修改了一下,希望这段代码能返回数据集。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货