C# 调用oracle 存储过程 报错PLS-00306: wrong number or types of arguments in call to 'FETCH_INP_FEE'
C#OracleParameterp1=newOracleParameter("t1",OracleType.VarChar);OracleParameterp2=new...
C#
OracleParameter p1 = new OracleParameter("t1", OracleType.VarChar);
OracleParameter p2 = new OracleParameter("t2", OracleType.Number);
OracleParameter p3 = new OracleParameter("t3", OracleType.VarChar,20);
OracleParameter p4 = new OracleParameter("t4", OracleType.Number);
OracleParameter p5 = new OracleParameter("t5", OracleType.Number);
OracleParameter p6 = new OracleParameter("t6", OracleType.Number);
OracleParameter p7 = new OracleParameter("t7", OracleType.Number);
p1.Direction = ParameterDirection.Input;
p2.Direction = ParameterDirection.Input;
p3.Direction = ParameterDirection.Output;
p4.Direction = ParameterDirection.Output;
p5.Direction = ParameterDirection.Output;
p6.Direction = ParameterDirection.Output;
p7.Direction = ParameterDirection.Output;
p1.Value = "1234"; p2.Value = 1;
OracleConnection conn = new OracleConnection(@"Data Source=XXX;Password=XXX;User ID=XXX");
conn.Open();
OracleCommand testCommand = conn.CreateCommand();
testCommand.CommandText = "abc.bcd";
testCommand.CommandType = CommandType.StoredProcedure;
testCommand.Parameters.Add(p1);
testCommand.Parameters.Add(p2);
testCommand.Parameters.Add(p3);
testCommand.Parameters.Add(p4);
testCommand.Parameters.Add(p5);
testCommand.Parameters.Add(p6);
testCommand.Parameters.Add(p7);
OracleDataAdapter daHIS = new OracleDataAdapter();
daHIS.SelectCommand = testCommand;
DataSet ds = new DataSet();
daHIS.Fill(ds);
conn.Close();
create or replace procedure abc.bcd(t1 in varchar2,t2 in number,t3 out varchar2 ,t4 out number,t5 out number , t6out number ,t7 out number )
declare
t3 varchar2(20);
t4 number;
t5 number;
t6 number;
t7 number;
begin
inpbill.fetch_inp_fee('123', 1, t3, t4, t4, t5, t7);
end;
这个在数据库中可以执行 展开
OracleParameter p1 = new OracleParameter("t1", OracleType.VarChar);
OracleParameter p2 = new OracleParameter("t2", OracleType.Number);
OracleParameter p3 = new OracleParameter("t3", OracleType.VarChar,20);
OracleParameter p4 = new OracleParameter("t4", OracleType.Number);
OracleParameter p5 = new OracleParameter("t5", OracleType.Number);
OracleParameter p6 = new OracleParameter("t6", OracleType.Number);
OracleParameter p7 = new OracleParameter("t7", OracleType.Number);
p1.Direction = ParameterDirection.Input;
p2.Direction = ParameterDirection.Input;
p3.Direction = ParameterDirection.Output;
p4.Direction = ParameterDirection.Output;
p5.Direction = ParameterDirection.Output;
p6.Direction = ParameterDirection.Output;
p7.Direction = ParameterDirection.Output;
p1.Value = "1234"; p2.Value = 1;
OracleConnection conn = new OracleConnection(@"Data Source=XXX;Password=XXX;User ID=XXX");
conn.Open();
OracleCommand testCommand = conn.CreateCommand();
testCommand.CommandText = "abc.bcd";
testCommand.CommandType = CommandType.StoredProcedure;
testCommand.Parameters.Add(p1);
testCommand.Parameters.Add(p2);
testCommand.Parameters.Add(p3);
testCommand.Parameters.Add(p4);
testCommand.Parameters.Add(p5);
testCommand.Parameters.Add(p6);
testCommand.Parameters.Add(p7);
OracleDataAdapter daHIS = new OracleDataAdapter();
daHIS.SelectCommand = testCommand;
DataSet ds = new DataSet();
daHIS.Fill(ds);
conn.Close();
create or replace procedure abc.bcd(t1 in varchar2,t2 in number,t3 out varchar2 ,t4 out number,t5 out number , t6out number ,t7 out number )
declare
t3 varchar2(20);
t4 number;
t5 number;
t6 number;
t7 number;
begin
inpbill.fetch_inp_fee('123', 1, t3, t4, t4, t5, t7);
end;
这个在数据库中可以执行 展开
展开全部
create or replace procedure abc.bcd(t1 in varchar2,t2 in number,t3 out varchar2 ,t4 out number,t5 out number , t6out number ,t7 out number )
/* 这部分要注释掉,你的参数是传入的,这里不能重复申明
declare
t3 varchar2(20);
t4 number;
t5 number;
t6 number;
t7 number;
*/
begin
inpbill.fetch_inp_fee('123', 1, t3, t4, t4, t5, t7);
end;
/* 这部分要注释掉,你的参数是传入的,这里不能重复申明
declare
t3 varchar2(20);
t4 number;
t5 number;
t6 number;
t7 number;
*/
begin
inpbill.fetch_inp_fee('123', 1, t3, t4, t4, t5, t7);
end;
更多追问追答
追问
abc.bcd(t1 in varchar2,t2 in number,t3 out varchar2 ,t4 out number,t5 out number , t6out number ,t7 out number )
这个是存储过程的结构
declare
t3 varchar2(20); t4 number; t5 number; t6 number;t7 number;
begin
inpbill.fetch_inp_fee('123', 1, t3, t4, t4, t5, t7);
insert into AA values(t3);
end;
这个在数据库中运行是没有问题的 查询AA这个表里面也有数据
追答
你现在是要返回参数值吗?
你的 t3, t4, t7 是做什么的?
展开全部
将存储过程
create or replace procedure abc.bcd(t1 in varchar2,t2 in number,t3 inout varchar2 ,t4 inout number,t5 inout number , t6 inout number ,t7 inout number )
t3、t4、t5、t6、t7都定义成inout类型。
在存储过程当中定义out类型,是传不去值的,而你还想要向其中传值,只能定义成inout型。
create or replace procedure abc.bcd(t1 in varchar2,t2 in number,t3 inout varchar2 ,t4 inout number,t5 inout number , t6 inout number ,t7 inout number )
t3、t4、t5、t6、t7都定义成inout类型。
在存储过程当中定义out类型,是传不去值的,而你还想要向其中传值,只能定义成inout型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询