调用oracle存储过程 【输入字符串的格式不正确】问题
本帖最后由 feixiangsunjq 于 2012-12-16 13:14:40 编辑 第一次写调用存储过程的代码 还是没接触过的oracle。菜鸟的不能再菜鸟了( ̄_ ̄|||)
报错: System.FormatException: 输入字符串的格式不正确。
[FormatException: 将参数值从 String 转换到 Int32 失败。]
存储过程【超简单尝试一下的】
set serveroutput on format wrapped
create or replace procedure te
(id_ in test.id%type,
name_ out varchar2)
as
begin
select name into name_ from test where id=id_;
end;
/
然后是c#里的调用:
OracleParameter p1 = new OracleParameter("id_", OracleType.Int32);
p1.Direction = ParameterDirection.Input;
// p1.OracleType = OracleType.Int32;
p1.Value = Convert.ToInt32(3);
cmd.Parameters.Add(p1);
OracleParameter p2 = new OracleParameter("name_", OracleType.VarChar);
p2.Direction = ParameterDirection.Output;
p2.Value = "w";
cmd.Parameters.Add(p2);
cmd.ExecuteNonQuery();
Label1.Text = cmd.Parameters[1].ToString();
不知道以上c#得到输出参数的方法对不对=。=网上查的
求各位精通的前辈赐教
[解决办法]
p2.Value = "w";
是输出参数,不需要你自己写值,它是存储过程执行完得到的值;只有输入参才需要你填写数值。
而且 Label1.Text = cmd.Parameters[1].ToString();
上面应该改为Label1.Text = cmd.Parameters["name_"].ToString();