zoukankan      html  css  js  c++  java
  • 调用存储过程,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);

  • 相关阅读:
    Jetty和tomcat的比较
    Spring Boot – Jetty配置
    Java规则之条件语句中做空判断时使用||和&&常犯的错误
    bboss oreach循环嵌套遍历map
    url全部信息打印
    ajax省市县三级联动
    关于mysql中的count()函数
    vue——统一配置axios的baseUrl和所有请求的路径
    js——substr与substring的区别
    vue——axios请求成功却进入catch的原因
  • 原文地址:https://www.cnblogs.com/flashicp/p/757064.html
Copyright © 2011-2022 走看看