下面的CmdObj.是定义的SqlCommand对象
1、获得存储过程中return语句返回的整个存储过程函数的返回值:
//获得存储过程return的值,定义一个参数,指明其作用是接受return的值
CmdObj.Parameters.Add("RETURN_VALUE", SqlDbType.Int).Direction =ParameterDirection.ReturnValue;
通过获取该参数的方式最终获得return返回的值
int reValue = int.Parse(CmdObj.Parameters["RETURN_VALUE"].Value.ToString());
2、获得存储过程输出参数的值:
定义sql的参数,指定类型是输出
CmdObj.Parameters.Add("@outValue", SqlDbType.VarChar).Direction =ParameterDirection.Output;
获得输出参数的值
string outValue = CmdObj.Parameters["@outValue"].Value.ToString();
总结,关键地方就是指明参数的Direction 属性,使用ParameterDirection来指定,可以指定4种类型,
输入,
输出,
既是输入又是输出,
接受return
=====================================================================
示例:
04 |
create
procedure queryStuNameById |
07 |
@stuName
varchar (10)
output |
10 |
select
@stuName=stuName from
stuInfo where
stuId=@stuId |
02 |
using
System.Collections.Generic; |
05 |
using
System.Data.SqlClient; |
06 |
namespace
StoreProduceTest |
11 |
static
void Main( string [] args) |
13 |
Operater op =
new Operater(); |
14 |
string
name = op.QueryStuNameById( "1234" ); |
15 |
Console.WriteLine( string .Format( "学号为1234的学生的姓名为{0}" ,
name)); |
20 |
private
string ConStr =
"server=.;database=User;uid=sa;pwd=1234" ; |
21 |
private
SqlConnection sqlCon = null ; |
22 |
private
SqlCommand sqlComm = null ; |
23 |
SqlDataReader dr =
null ; |
24 |
public
string QueryStuNameById( string
Id) |
29 |
using
(sqlCon = new
SqlConnection(ConStr)) |
32 |
sqlComm =
new SqlCommand( "queryStuNameById" , sqlCon); |
34 |
sqlComm.CommandType = CommandType.StoredProcedure; |
36 |
sqlComm.Parameters.Add( "@stuId" , SqlDbType.VarChar); |
38 |
sqlComm.Parameters.Add( "@stuName" , SqlDbType.VarChar, 10); |
40 |
sqlComm.Parameters[ "@stuName" ].Direction = ParameterDirection.Output; |
42 |
sqlComm.Parameters[ "@stuId" ].Value =
"1234" ; |
44 |
sqlComm.ExecuteNonQuery(); |
46 |
name = sqlComm.Parameters[ "@stuName" ].Value.ToString(); |
51 |
Console.WriteLine(ex.ToString()); |