下面的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()); |