韩言福地

只有想不到的,没有办不到的。 - HY Auspicious Place

« 获取分页后的总页数ExecuteReader方法中CommandBehavior.CloseConnection的一些注意事项 »

如何通过asp.net调用存储过程,并返回存储过程的out参数值

问:
例子:
存储过程:
----------------
CREATE PROCEDURE p_out
@a as int,
@b as int,
@c as int output
AS
set @c=@a+@b
---------------------
.........
SqlCommand cmd2=new SqlCommand("p_out",conn);
cmd2.CommandType=CommandType.StoredProcedure;
cmd2.Parameters.Add("@a",SqlDbType.Int);
cmd2.Parameters.Add("@b",SqlDbType.Int);
cmd2.Parameters.Add("@c",SqlDbType.Int);
cmd2.Parameters[0].Value=2;
cmd2.Parameters[1].Value=3;
第三个参数我该如何设置?请高手指点,不胜感激!
-----------------------
    
______________________________________________________________________________________________
答1:
如果是返回的值应该要指定方向:
Parameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
para_c.Direction=ParameterDirection.output;
c=para_c.Value.toString();
这样在调用webservices时,就能取得返回的值了
______________________________________________________________________________________________
答2:
找不到Parameter类型
______________________________________________________________________________________________
答3:
多谢,搞定了。
----------------
CREATE PROCEDURE p_out
@a as int,
@b as int,
@c as int output
AS
set @c=@a+@b
---------------------
.........
SqlCommand cmd2=new SqlCommand("p_out",conn);
cmd2.CommandType=CommandType.StoredProcedure;
cmd2.Parameters.Add("@a",SqlDbType.Int);
cmd2.Parameters.Add("@b",SqlDbType.Int);
SqlParameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
cmd2.Parameters[0].Value=2;
cmd2.Parameters[1].Value=3;
para_c.Direction=ParameterDirection.Output;
conn.open();
cmd2.ExecuteNonQuery();
conn.close();
this.Response.Write(para_c.value.ToString());
______________________________________________________________________________________________
答4:
再继续补一点(取得return值)
CREATE PROCEDURE p_out
@a as int,
@b as int,
@c as int output
AS
set @c=@a+@b
return '10'
---------------------
.........
SqlCommand cmd2=new SqlCommand("p_out",conn);
cmd2.CommandType=CommandType.StoredProcedure;
cmd2.Parameters.Add("@a",SqlDbType.Int);
cmd2.Parameters.Add("@b",SqlDbType.Int);
SqlParameter para_c=cmd2.Parameters.Add("@c",SqlDbType.Int);
SqlParameter para_r=cmd2.Parameters.Add("returnvalue",SqlDbType.Int);
cmd2.Parameters[0].Value=2;
cmd2.Parameters[1].Value=3;
para_c.Direction=ParameterDirection.Output;
para_r.Direction=ParameterDirection.ReturnValue;
conn.open();
cmd2.ExecuteNonQuery();
conn.close();
this.Response.Write(para_c.value.ToString());
this.Response.Write(para_r.value.ToString());

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright 2007-2010 www.yinrg.com(HY Auspicious Place) . 湘ICP备06007796号.