不运行PostgreSQL的异常

时间:2015-01-18 22:45:14

标签: postgresql exception-handling

我收到了代码:

DECLARE

BEGIN

    INSERT INTO articulo VALUES (33, 'Mesa 33', 1000.45463, 50.2345, 200.23459, 20, 'Conjunto');
    INSERT INTO articulo VALUES (34, 'Mesa 34', 300.4500, 15.2379 , 1.2379 , 5, 'kid 4');

    SELECT * FROM articulo;

    INSERT INTO cliente (id_clie, nom_clie, rfc_clie, tel_clie, dir_clie, suspendido) VALUES (44,'Rosa Almaran', 'R7XA-910101', '5544466677', 'sur 24', 0);

EXCEPTION
WHEN NO_DATA_FOUND THEN
  RAISE EXCEPTION ''All fields are required'';  
WHEN OTHERS THEN
RAISE EXCEPTION ''This is an exception'';   
END; 

我从here读到的。 当我尝试运行代码时,我得到了:

ERROR: syntax error at or near "INSERT"
LINE 5: INSERT INTO Product VALUES (33, 'Mesa 33', 1000.45463, 50 ....
        ^

我希望PostgreSQL根据遇到的异常类型显示异常。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

尝试将代码包装在DO statement

DO LANGUAGE plpgsql $$
DECLARE

BEGIN

    INSERT INTO articulo VALUES (33, 'Mesa 33', 1000.45463, 50.2345, 200.23459, 20, 'Conjunto');
    INSERT INTO articulo VALUES (34, 'Mesa 34', 300.4500, 15.2379 , 1.2379 , 5, 'kid 4');

    SELECT * FROM articulo;

    INSERT INTO cliente (id_clie, nom_clie, rfc_clie, tel_clie, dir_clie, suspendido) VALUES (44,'Rosa Almaran', 'R7XA-910101', '5544466677', 'sur 24', 0);

EXCEPTION
WHEN NO_DATA_FOUND THEN
  RAISE EXCEPTION 'All fields are required';  
WHEN OTHERS THEN
RAISE EXCEPTION 'This is an exception';   
END;
$$;