首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

在ASP.NET中,怎的得到存储过程中的output参数

2011-12-21 
在ASP.NET中,怎样得到存储过程中的output参数?建了一个存储过程,CREATEprocsc_login@LoginNamevarchar(20)

在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 ')


DROP PROCEDURE titles_sum
GO
USE pubs
GO
CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '% ', @@SUM money OUTPUT
AS
SELECT 'Title Name ' = title
FROM titles
WHERE title LIKE @@TITLE
SELECT @@SUM = SUM(price)
FROM titles
WHERE title LIKE @@TITLE
GO

接下来,将该 OUTPUT 参数用于控制流语言。


说明 OUTPUT 变量必须在创建表和使用该变量时都进行定义。


参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配(除非使用 @@SUM = variable 形式)。

DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The% ', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
PRINT ' '
PRINT 'All of these titles can be purchased for less than $200. '
END
ELSE
SELECT 'The total cost of these titles is $ '
+ RTRIM(CAST(@@TOTALCOST AS varchar(20)))

下面是结果集:

Title Name
------------------------------------
The Busy Executive 's Database Guide
The Gourmet Microwave
The Psychology of Computer Cooking

(3 row(s) affected)

Warning, null value eliminated from aggregate.

All of these titles can be purchased for less than $200.


[解决办法]
用RetrunValue接收,在储存过程中用return返回一个值就可以了。

热点排行