这个存储过程比较简单,虽然看起来比较长。。。
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;