当前位置: 代码迷 >> Sql Server >> 一个简单的存储过程调用失败,该如何解决
  详细解决方案

一个简单的存储过程调用失败,该如何解决

热度:30   发布时间:2016-04-24 10:24:47.0
一个简单的存储过程调用失败
这个存储过程比较简单,虽然看起来比较长。。。
create PROCEDURE new_proc
@tableId1 INTEGER,
@tableId2 INTEGER
    --NOT DETERMINISTIC
    --SQL SECURITY DEFINER
    --COMMENT ''
    with recompile
as
     declare @perNum int;
     declare @oId1 int;
     declare @oId2 int;
     
     select personNum  into perNum from OrderTbl as ot where
     ot.tableId =@tableId2
     and ot.isPay = 0;
     
     select id into oId1 from OrderTbl as ot where
     ot.tableId = @tableId1
     and ot.isPay = 0;
     
     select id into oId2 from OrderTbl as ot where
     ot.tableId = @tableId2
     and ot.isPay = 0;

     update OrderTbl
     set personNum = personNum + @perNum
     where id = @oId2;
     
     update OrderDetailTbl set orderId = @oId2 where orderId = @oId1;
     
     update TableTbl set flag = 0 where id = @tableId1;
     
     delete from OrderTbl where id = @oId1;


调用,代码如下:
    try
            {
                SqlCommand cmd = new SqlCommand("new_proc", sqlCon);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@tableId1", tableId1));
                cmd.Parameters.Add(new SqlParameter("@tableId2", tableId2));
                cmd.ExecuteNonQuery();
                return true;
            }
            catch
            {
                return false;
            }

我好像记得只有第一次运行时没报错,之后一直是这样的错误:

现在急需解决,不胜感激
------解决方案--------------------
这样子赋值
select @tempid=id from t where id=1;
  相关解决方案