语义:
我使用 PostGreSql 9.0.3 作为我的 Dbms。实际上,我试图完成为我分配的目标之一,即当IF - Statement
我的存储过程中的某些条件失败时,使用一些预定义的消息引发异常。由于该异常,应该需要回滚流程。
句法:
For r3 in select itemname,stock from stock s,items it where s.itemno=it.itemno and it.itemno=$2[I].itemno and s.stockpointno=$1.stockpointno loop
if xStock > r3.stock then
RAISE EXCEPTION '%', r3.itemname || ' decreased down from the low stock level';
end if;
End Loop;
其中r3
是记录,xStock
是双精度变量。
然后在存储过程结束时,我只包含以下代码以回滚发生的事务。
Exception when raise_exception then rollback transaction;
我面临的问题是,一旦出现手动异常,就会出现以下错误。
DA00014:ERROR: XX000: SPI_execute_plan_with_paramlist failed executing query "rollback transaction": SPI_ERROR_TRANSACTION
尽管发生了上述错误,但在我签入表格时并未发生交易。我不知道在回滚过程中为什么会出现这个特定错误的确切原因。谁能告诉我在我的代码中可能犯的错误是什么?并提出解决此问题的解决方案。