zoukankan      html  css  js  c++  java
  • 存储过程返回值及输出参数笔记

     在项目中写了一个存储过程:    

    Create PROCEDURE [dbo].[****] @ParkingAddress nvarchar(50) AS
    BEGIN
    insert into table(ParkingAddress)
    values(@ParkingAddress)
    END
    if(@@rowcount>0)
    return 1
    else
    return 0
         在程序中我需要调用这个存储过程并且得到它的返回值。因此需要获取该存储过程的返回值。在程序中我通过SqlCommand中的ExecuteNonQuery方法调用成功后,一时不知道怎么得到它的返回值。(没有用output输出参数),故查了些资料得到了解决方案,下面是一些记录,这里整理在一起,便于以后查找方便。

         要点:output是在存储过程中的参数的返回值(输出参数),而ReturnValue是存储过程返回的值(使用return关键字),一个存储过程可以有任意多个依靠参数返回的值,但只有一个ReturnValue。

    一、获取存储过程的返回值--通过查询分析器获得
         存储过程大体分成三类:

    1、返回记录集的存储过程:执行结果是一个记录集,例如,从数据库中检索出符合某一个或几个条件的记录。

    2、返回数值得的存储过程(也可称为标量存储过程),其执行完后返回一个值,例如数据库中执行一个有返回值的函数或命令。

    3、行为存储过程,用来实现数据库的某个功能,而没有返回值,例如在数据库中的更新和删除操作。

    另外:含有return的存储过程其返回值为return返回的那个值。

    没有return的存储过程,无论执行结果又无结果集,其返回值都是0,

    带有输出参数的存储过程,如果有RETURN则返回RETURN返回的那个值,如果要SELECT输出参数,则出现输出参数的值,和有无RETURN无关。

    二、获取存储过程的返回值--通过程序获得

    SqlParameter[] cmdParms = { .. ,new SqlParameter("@return",SqlDbType.Int)};
    cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.ReturnValue;或者
    cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Output或者
    cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Input;

    得到返回值 object obj = cmdParms[cmdParms.Length - 1].Value;

    根据上面的思路,最后在项目中通过 

                SqlParameter p = new SqlParameter("@ReturnValue", SqlDbType.Int);//这里的@ReturnValue可以根据需要自己命名,如果不命名系统将提供默认的一个名称。
                p.Direction = ParameterDirection.ReturnValue;

                SqlCommand.Parameters.Add(P);

                SqlCommand.ExecuteNonQuery();

                object obj=SqlCommand.Parameters["ReturnValue"].Value;

     就这样程序就得到存储过程中的返回值。

    问题解决!

    http://www.cnblogs.com/Charles2008/archive/2012/04/16/StoreProc_ReturnValue.html

  • 相关阅读:
    象棋
    支持向量机
    朴素贝叶斯分类
    规则归纳
    监督学习
    序列模式
    关联规则
    从《数据挖掘概念与技术》到《Web数据挖掘》
    数据挖掘在大数据中的应用综述
    join sql图
  • 原文地址:https://www.cnblogs.com/wbzhao/p/2480383.html
Copyright © 2011-2022 走看看