• 调用存储过程,insert行后返回自增长列的值


    1.CREATE PROCEDURE  AddOrder
    (
    @OrderID INT OUT,
         @CustomerID NCHAR(5),
         @OrderDate DATETIME  )
    AS
    INSERT INTO Orders
    (CustomerID ,
     OrderDate
    )
    VALUES
    ( @CustomerID ,
     @OrderDate
    )
    --SELECT @OrderID = @@IDENTITY  //使用触发器有可能出现问题
    SET @OrderID = SCOPE_IDENTITY() //返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。
    GO
    OrderID自动增长值的获取通过输出参数来完成,这个相当不错,如果使用SqlDataAdapter.RowUpdated事件来处理那效率会很低。
    对insertOrderComm对象的定义为:
    SqlCommand insertOrderComm = new SqlCommand("AddOrder",_conn);
    insertOrderComm.CommandType = CommandType.StoredProcedure;
    insertOrderComm.Parameters.Add("@OrderID",SqlDbType.Int,4,"OrderID");
    insertOrderComm.Parameters["@OrderID"].Direction = ParameterDirection.Output;
    insertOrderComm.Parameters.Add("@OrderDate",SqlDbType.DateTime,8,"OrderDate");
    insertOrderComm.Parameters.Add("@CustomerID",SqlDbType.NChar,5,"CustomerID");
    2、
    SET @DID =@@IDENTITY
    return 1
    运行的很好。
    可是换成:
    SET @DID =SCOPE_IDENTITY()

    总是 System.DBNull。

       returnObject=db.ReturnValue(ProcedureName,20,sqlpara);
        db.Excute(ProcedureName,sqlpara);
            returnObject= sqlpara[20].Value;
       }
       catch (System.Exception e)
       {
        throw e;
       }
       finally
       {
        db.Close();
       }
       if(returnObject!=null&&returnObject!=System.DBNull.Value)
        sn=System.Convert.ToInt32(returnObject);

  • 相关阅读:
    bShare一个强大的网页分享插件
    免费软件,到底是谁在获益?
    波西的小球——优化日志
    CSDN无故删除东西,强烈抗议 枯木
    网站排障分析常用的命令 枯木
    KVM在线迁移(动态迁移) 枯木
    RHEL6 KVM安装备忘 枯木
    MySQL备份和恢复具体实施(上) 枯木
    Nginx支持php相关配置 枯木
    关于RHEL6中ulimit的nproc限制 枯木
  • 原文地址:https://www.cnblogs.com/flashicp/p/757064.html
Copyright © 2020-2023  润新知