asp.net获取oracle存储过程返回值

oracle存储过程已经写了好,但怎么在asp.net中获取存储过程的out值。
存储过程SQL:
create or replace procedure proc_pdalogin(name in varchar2,pwd in varchar2,nameresult out varchar2,result out number) is
begin
result:=0;
select username into nameresult from pdalogin where username=name and userpwd=pwd;
if nameresult is not null then
result:=1;
end if;
exception
when no_data_found then
result:=0;
end proc_pdalogin;

asp.net调用:
OracleConnection conn = new OracleConnection(conStr);
try
{
conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_pdalogin";
cmd.Parameters.Add("name",OracleType.VarChar,25);
cmd.Parameters["name"].Value = name.Trim();
cmd.Parameters.Add("pwd", OracleType.VarChar, 25);
cmd.Parameters["pwd"].Value = pwd.Trim();
cmd.Parameters.Add("nameresult", OracleType.VarChar, 25);
cmd.Parameters["nameresult"].Value ="";
cmd.Parameters.Add("result", OracleType.Number);
cmd.Parameters["result"].Value = 0;
OracleDataReader odr = cmd.ExecuteReader();
这样调用不知道什么地方错了,然后就是存储过程中有两个参数,我可以直接传给他,然而两个参数我要怎么传啊,我主要是要获得存储过程中的result值。谢谢

时间关系手写一份 你能理解多少是多少
OracleParameter Para = new OracleParameter("参数名", OracleType.Number);
//这里设置他的参数类型.out的就是Output 如果是in类型就是Input, 如果是函数返回值那么就是ReturnValue
//然后设置他的value,out类型的value是DBNull.Value;或者不设置.in类型就看你自己的值了
Para.Direction = ParameterDirection.Output;
//然后
cmd.Parameters.Add(Para);
//试试绝对可以
//ps:对于out取值,执行完,你直接取对应参数的value就可以了.但是返回的是object类型.需要转化
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-02
1.对于out参数需要指明Direction属性,因为这个属性的默认值是Input
2.取Output类型参数的值: 在执行存储过程后 cmd.Parameters["result"].Value就已经包含你想要的值了本回答被提问者采纳
第2个回答  2010-12-17
需 指明参数Direction属性,如下:
cmd.Parameters["name"].Direction = ParameterDirection.Input;
cmd.Parameters["pwd"].Direction = ParameterDirection.Input;
cmd.Parameters["nameresult"].Direction = ParameterDirection.Output;
cmd.Parameters["result"].Direction = ParameterDirection.Output;
相似回答