asp.net获取oracle存储过程返回值
oracle存储过程已经写了好,但怎么在asp.net中获取存储过程的out值。存储过程SQL:createorreplaceprocedureproc_pdalogin...
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值。谢谢 展开
存储过程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值。谢谢 展开
3个回答
展开全部
时间关系手写一份 你能理解多少是多少
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类型.需要转化
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.对于out参数需要指明Direction属性,因为这个属性的默认值是Input
2.取Output类型参数的值: 在执行存储过程后 cmd.Parameters["result"].Value就已经包含你想要的值了
2.取Output类型参数的值: 在执行存储过程后 cmd.Parameters["result"].Value就已经包含你想要的值了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需 指明参数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;
cmd.Parameters["name"].Direction = ParameterDirection.Input;
cmd.Parameters["pwd"].Direction = ParameterDirection.Input;
cmd.Parameters["nameresult"].Direction = ParameterDirection.Output;
cmd.Parameters["result"].Direction = ParameterDirection.Output;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询