--储存过程如下
create or replace procedure UpdateIBLocationId(Messages out varchar2,PIBName in varchar2)
as
msg varchar2(100);
begin
select ibcode into oldIBCode from p010b001.ib_recognize_declare where ibname=PIBName;
......
Messages :="成功!";
end UpdateIBLocationId;
//C#调用如下,
cmd = new OracleCommand("UpdateIBLocationId", con);
cmd.CommandType = CommandType.StoredProcedure; p1 = new OracleParameter("result", OracleType.VarChar,500);
p1.Direction = System.Data.ParameterDirection.ReturnValue;
cmd.Parameters.Add(p1); p2 = new OracleParameter("PIBName", OracleType.VarChar, 20);
p2.Direction = System.Data.ParameterDirection.Input;
p2.Value = ibName[i]; cmd.Parameters.Add(p2);
try
{
con.Open();
cmd.ExecuteNonQuery();
//DataSet ds = new DataSet();
//IDbDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd);
//da.Fill(ds);
// Message +=ds.Tables[0] + "<br/>------------------------------------------------------------<br/>";
}
finally
{
if (con != null)
{
con.Close();
}
}//调用报错
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------ORA-06550: 第 1 行, 第 18 列:
PLS-00306: 调用 'UPDATEIBLOCATIONID' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored请问如何得到返回参数Messages 的值
create or replace procedure UpdateIBLocationId(Messages out varchar2,PIBName in varchar2)
as
msg varchar2(100);
begin
select ibcode into oldIBCode from p010b001.ib_recognize_declare where ibname=PIBName;
......
Messages :="成功!";
end UpdateIBLocationId;
//C#调用如下,
cmd = new OracleCommand("UpdateIBLocationId", con);
cmd.CommandType = CommandType.StoredProcedure; p1 = new OracleParameter("result", OracleType.VarChar,500);
p1.Direction = System.Data.ParameterDirection.ReturnValue;
cmd.Parameters.Add(p1); p2 = new OracleParameter("PIBName", OracleType.VarChar, 20);
p2.Direction = System.Data.ParameterDirection.Input;
p2.Value = ibName[i]; cmd.Parameters.Add(p2);
try
{
con.Open();
cmd.ExecuteNonQuery();
//DataSet ds = new DataSet();
//IDbDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd);
//da.Fill(ds);
// Message +=ds.Tables[0] + "<br/>------------------------------------------------------------<br/>";
}
finally
{
if (con != null)
{
con.Close();
}
}//调用报错
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------ORA-06550: 第 1 行, 第 18 列:
PLS-00306: 调用 'UPDATEIBLOCATIONID' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored请问如何得到返回参数Messages 的值
p1 = new OracleParameter( "Messages", OracleType.VarChar,500);
p1.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(p1);
p2 = new OracleParameter( "PIBName", OracleType.VarChar, 20);
p2.Direction = System.Data.ParameterDirection.Input;
p2.Value = ibName[i]; cmd.Parameters.Add(p2);
不要有空格,另外参数名要与存储过程的参数名字一样,而且要确保传入的参数不能为null