您的位置:首页 > 编程语言 > ASP

ASP.NET 调用带有返回值的存储过程及获取其返回值

2009-12-12 12:40 525 查看
ASP.NET 调用带有返回值的存储过程及获取其返回值

1.创建一个带有返回值的存储过程(获取当前系统时间):

CREATE PROCEDURE [dbo].[proctest]
@out datetime out
as
set @out=getdate()

2.在ASP.NET中调用proctest

SqlConnection conn = new SqlConnection(connString)//connString 数据库连接字符串
SqlCommand comm = new SqlCommand();
conn.Open();
comm.Connection = conn;
comm.CommandText = "proctest";//指定存储过程名称
comm.CommandType = CommandType.StoredProcedure;//设置comm执行对象
SqlParameter sp = new SqlParameter("@out", SqlDbType.DateTime);//指定存储过程返回参数的数据类型 这个很重要
sp.Direction = ParameterDirection.Output;
comm.Parameters.Add(sp);
comm.ExecuteNonQuery();
return sp.Value.ToString();//返回存储过程返回值

假设有存储过程如下:
---------------------------------------------

CREATE proc sp_uptmp @tmpName varchar(50),@srcPos varchar(255)
as

Begin TRAN
insert into t_template values(@tmpName,@srcPos)
COMMIT

return isnull(@@identity,0)
GO

------------------------------------------------------------
在 ado.net 里面获取返回值的方法为(c#):
------------------------------------------------------------
SqlConnection dbconn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand("sp_uptmp",dbconn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter tmpName = cmd.Parameters.Add("@tmpName",SqlDbType.VarChar);
SqlParameter srcPos = _cmd.Parameters.Add("@srcPos",SqlDbType.VarChar);
SqlParameter rtnval = cmd.Parameters.Add("rval",SqlDbType.Int);

tmpName.Direction = ParameterDirection.Input;
srcPos.Direction = ParameterDirection.Input;
rtnval.Direction = ParameterDirection.ReturnValue;

tmpName.Value = "";
srcPos.Value = "";
dbconn.Open();
cmd.ExecuteNonQuery();
dbconn.Close();

tmpid = (int)rtnval.Value; //此处即为返回值

更多信息,请关注:成都电脑维修成都电脑维护成都网络维护
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: