下面的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
=====================================================================
示例:
01 |
/** |
02 |
* 存储过程 |
03 |
* |
04 |
create
procedure queryStuNameById |
05 |
( |
06 |
@stuId
varchar (10), --输入参数 |
07 |
@stuName
varchar (10)
output --输出参数 |
08 |
) |
09 |
as |
10 |
select
@stuName=stuName from
stuInfo where
stuId=@stuId |
11 |
* |
12 |
*/ |
01 |
using
System; |
02 |
using
System.Collections.Generic; |
03 |
using
System.Text; |
04 |
using
System.Data; |
05 |
using
System.Data.SqlClient; |
06 |
namespace
StoreProduceTest |
07 |
{ |
08 |
public
class Program |
09 |
{ |
10 |
11 |
static
void Main( string [] args) |
12 |
{ |
13 |
Operater op =
new Operater(); |
14 |
string
name = op.QueryStuNameById( "1234" ); |
15 |
Console.WriteLine( string .Format( "学号为1234的学生的姓名为{0}" ,
name)); |
16 |
} |
17 |
} |
18 |
public
class Operater |
19 |
{ |
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) |
25 |
{ |
26 |
string
name = "" ; |
27 |
try |
28 |
{ |
29 |
using
(sqlCon = new
SqlConnection(ConStr)) |
30 |
{ |
31 |
sqlCon.Open(); |
32 |
sqlComm =
new SqlCommand( "queryStuNameById" , sqlCon); |
33 |
//设置命令的类型为存储过程 |
34 |
sqlComm.CommandType = CommandType.StoredProcedure; |
35 |
//设置参数 |
36 |
sqlComm.Parameters.Add( "@stuId" , SqlDbType.VarChar); |
37 |
//注意输出参数要设置大小,否则size默认为0, |
38 |
sqlComm.Parameters.Add( "@stuName" , SqlDbType.VarChar, 10); |
39 |
//设置参数的类型为输出参数,默认情况下是输入, |
40 |
sqlComm.Parameters[ "@stuName" ].Direction = ParameterDirection.Output; |
41 |
//为参数赋值 |
42 |
sqlComm.Parameters[ "@stuId" ].Value =
"1234" ; |
43 |
//执行 |
44 |
sqlComm.ExecuteNonQuery(); |
45 |
//得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换 |
46 |
name = sqlComm.Parameters[ "@stuName" ].Value.ToString(); |
47 |
} |
48 |
} |
49 |
catch
(Exception ex) |
50 |
{ |
51 |
Console.WriteLine(ex.ToString()); |
52 |
} |
53 |
return
name; |
54 |
} |
55 |
} |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步