C#中会用存储过程的返回值
1,用output关键字声明的参数。
sql脚本:
CREATE PROC proc_name
(@parameter1 int OUTPUT,[])
as
sqlstatement
C#
cmd.Parameters.Add("@Parameter1",SqlDbType.Int);
cmd.Parameters["@Parameter1"].Direction=ParameterDirection.OutPut;
cmd.Execute***();//任何执行方式
str=cmd.Parameters["@Parameter1"].value.ToString();
OUTPUT参数不仅可以传递输出值,也可以为其指定输入值
2,返回代码(proc中的return语句)
返回代码与return关键字一样都是可选的。
cmd.Parameter.Add("@ret",SqlDbType.Int).Direction=ParameterDirection.ReturnValue;
cmd.Execute***();
int ret=int.Parse(cmd.Parameters["@ret"].Value.ToSting());
3,游标返回类型(VARYING关键字),返回类型为非标量值,因此可以返回多个值(结果集)。
在ADO.NET中,不能是用返回游标的存储过程,只能在SQL脚本里用。
4,影响行数计数。
记录sql语句所影响的行数,通常无用。
SET NOCOUNT ON 不返回计数,将大量减少网络流量,提高性能。(此子句也可用于触发器等等中)
SET NOCOUNT OFF 返回计数。
5,SELECT结果集。这个返回是与return,output等返回相独立的。
proc每次执行select语句都将返回结果,因此可能返回多个结果集。
联想SqlDataReader.NextResult()方法,用于从一个结果集移到下一个结果集。
而SqlDataReader.Read()是在一个结果集的行间做前向遍历。