日期:2014-05-20  浏览次数:20398 次

在ASP.NET中,怎样得到存储过程中的output参数?
建了一个存储过程,
CREATE     proc   sc_login
  @LoginName   varchar(20), --   登录名
  @Pwd   varchar(20), --   密码
  @result   int   output --新生成的id值,输出
as...

想得到该存储过程中执行后的@result的值,
SqlCommand   mycmd   =   new   SqlCommand();
                        mycmd.Connection   =   myconn;
                        mycmd.CommandType   =   CommandType.StoredProcedure;
                        mycmd.CommandText   =   "sc_login ";
                       

                        SqlParameter   strLoginName   =   new   SqlParameter( "@LoginName ",   SqlDbType.VarChar,   20);
                        strLoginName.Value   =   tbLoginName.Text.ToString();
                     
                        SqlParameter   strPwd   =   new   SqlParameter( "@pwd ",   SqlDbType.VarChar,   20);
                        strPwd.Value   =   tbPwd.Text.ToString();

                        SqlParameter   strResult   =   new   SqlParameter( "@result ",   SqlDbType.Int);
                          //该参数为返回值
                        strResult.Direction   =   ParameterDirection.Output;

                        mycmd.Parameters.Add(strLoginName);
                        mycmd.Parameters.Add(strPwd);
                        mycmd.Parameters.Add(strResult);

                        mycmd.ExecuteNonQuery();
                        string   number   =   strResult.Value.ToString();
                        myconn.Close();
                        得不到参数的值?哪位给帮忙看一下?谢谢了!还有,带有output参数的存储过程在查询分析器中怎样调试的?exec   name   'para1 ', 'para2 ', 'para3 '提示出错,不知道咋回事?谢谢!
                       


------解决方案--------------------
parameters[4].Direction = ParameterDirection.ReturnValue;
------解决方案--------------------
使用 OUTPUT 参数
OUTPUT 参数允许外部过程、批处理或多条 Transact-SQL 语句访问在过程执行期间设置的某个值。下面的示例创建一个存储过程 (titles_sum),并使用一个可选的输入参数和一个输出参数。

首先,创建过程:

USE pubs
GO
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'titles_sum ' AND type = 'P ')