通过存储过程获取返回的刚刚插入的表的主键

本文详细介绍了在SQL操作中使用SqlParameter进行参数化查询的方法,包括如何定义输出参数@ReturnId来获取插入操作后的主键值。通过具体代码示例,展示了如何在C#中设置参数方向为输出,并在执行存储过程或SQL语句后获取返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

未经同意不得转载

此主键可以是整型,字符型,由个人开发需求定义

   SqlParameter[] sp = {
                       new SqlParameter("@PID",PID),
                       new SqlParameter("@SizeType",SizeType),
                       new SqlParameter("@OrderQty",OrderQty),
                       new SqlParameter("@PlanedQty",PlanedQty),
                       new SqlParameter("@CreateBy",CreateBy),
                       new SqlParameter("@CreateDate",CreateDate) ,
                       new SqlParameter("@ReturnId",SqlDbType.VarChar,50)
                };

也就是在SqlParameter里面定义一个@ReturnId用来进行装返回值的,

    Connection.Open();
                //实例化数据库命令对象
                SqlCommand cmd = new SqlCommand(CommandText, Connection);
                try
                {
                    //设置命令执行类型
                    cmd.CommandType = type;
                    //设置SQL语句或存储过程参数
                    pars[6].Direction = ParameterDirection.Output;
                    cmd.Parameters.AddRange(pars);
                    //调用方法得到SqlDataReader对象
                    int ii = cmd.ExecuteNonQuery();
                    if (ii > 0) {
                        strId = cmd.Parameters["@ReturnId"].Value.ToString();
                    }
                    return strId;

上面的sp集合就是传到下面的pars,在pars的dui'y

 

	@PID nvarchar(50),
		@SizeType nvarchar(50),
		@OrderQty nvarchar(50),
		@PlanedQty nvarchar(50),
		@CreateBy nvarchar(50),
		@CreateDate nvarchar(50),
		@ReturnId nvarchar(50) Output

AS
Begin Tran abd
		--插入主表
		Insert Into A表(PID, Size, QrderQty, PlanedQty, CreateBy, CreateDate)
		Values (
	    @PID ,@SizeType ,@OrderQty ,@PlanedQty,@CreateBy ,@CreateDate  )
		
		--Select @ReturnId=SCOPE_IDENTITY()
		select 	@ReturnId=(select  TOP (1)  ASH_ID from A表 where  
	            PID=@PID and Size=@SizeType and QrderQty=@OrderQty 
                    and CreateBy=@CreateBy order by ASH_ID desc)
	
		If @@Error<> 0
		Begin
		Rollback Tran abd
		Return -1
		End
		else	
		begin
		Commit Tran 	
		end	 

其实主从表的时候也可以用到这个

记住,@ReturnId 是output类型的否则取不到值

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值