一项程序在交易中进行,如果存在错误,交易就会得到支持。
例如,你创立了<条码>my_proc(),规定了<条码>5条码>至<条码>。 然后,可生成<代码>,按0分列。 如下所示错误:
CREATE PROCEDURE my_proc(INOUT value INTEGER) AS $$
BEGIN
SET my.var = 5; -- Here
SELECT 1/value INTO value;
END;
$$ LANGUAGE plpgsql;
首先,请在<代码>2至my.var
上查询my_proc(1)
,然后在<代码>5上打上<编码>。 成功如下:
postgres=# SET my.var = 2;
SET
postgres=# CALL my_proc(1);
my_func
---------
1
(1 row)
postgres=# SELECT current_setting( my.var );
current_setting
-----------------
5
(1 row)
如今,你将<代码>2 至my.var
,然后打电话my_proc(0)
,然后在<0/code>误差上打<代码>。
postgres=# SET my.var = 2;
SET
postgres=# CALL my_proc(0);
ERROR: division by zero
...
postgres=# SELECT current_setting( my.var );
current_setting
-----------------
2
(1 row)