日期:2014-05-17  浏览次数:20730 次

存储过程里EXEC存储过程之后INSERT语句无效
我的存储过程里面
在订单列表里面创建了游标(为了能循环操作)

然后在里面有个操作

BEGIN TRANSACTION tSell
EXEC up_GetReturn @id, @price, @return OUTPUT;
DECLARE @sell DECIMAL(12, 2);
SET @sell = 0.0;
SET @sell = @price * @qty * 0.02; --price decimal(12,2) , qty int
SET @return = @return - @sell;    --return decimal912,2)
EXEC up_Success @return, @id, 1, N'', @price, 'Success';
INSERT INTO History 
VALUES(@id, @sell, GETDATE(), 0, 'Sell');
COMMIT TRANSACTION tSell


up_Success里面是执行成功了,但是INSERT INTO History这句没执行直接跳过了
请教一下有可能出现什么情况才会导致这样的
或者有什么可以调试一下的

------解决方案--------------------
有ID自增的话,insert into history的时候,需要显示写列名啊,不能没有列名,不然会报错,
------解决方案--------------------
引用:
有触发器, 会往另外一个表里面插多一条数据


insert into Amount (Id, OrId, Date, Amount, Balance, Remark)
select Customer.ID as ID, inserted.OrID, inserted.Date, inserted.Amount, inserted.Amount as Balance, inserted.Remark
from inserted join Orders on inserted.OrID = orders.ID join Customer on orders.CustomerID = Customer.ID

执行后,查看Amount表是否有新增记录,
 若没有,说明触发器或有INSERT INTO History ...问题.
------解决方案--------------------
引用:
Quote: 引用:

如果是2008r2,可以启动调试



能启动调试,但是不能单步,直接就过了


在代码的左边点击一下,下个断点,然后直接用F11:逐语句,调试试试