Если тогда пункт postgresql - PullRequest
0 голосов
/ 10 мая 2019

Я определил эту функцию:

SELECT dblink_connect('conne1', 'dbname=bdp3e1');
SELECT dblink_connect('conne2', 'dbname=bdp3e2');

CREATE OR REPLACE FUNCTION insertEditorial(nombre VARCHAR(100), CIF INTEGER, ubicacion VARCHAR(50))
RETURNS void AS
$insertEditorial$
BEGIN
    IF ubicacion IS NULL THEN
        dblink_exec('conne2', 'INSERT INTO Editorial VALUES (nombre, CIF);');
    ELSE
        dblink_exec('conne1', 'INSERT INTO Editorial VALUES (nombre, CIF, ubicacion);');
    ENDIF;
END;
$insertEditorial$ LANGUAGE plpgsql;

Но при выполнении postgreSQL возвращает следующую ошибку:

psql:PR3_Procedures.sql:14: ERROR:  syntax error at or near "dblink_exec"
LINE 6:         dblink_exec('conne2', 'INSERT INTO Editorial VALUES ...

Что с ней не так?

1 Ответ

1 голос
/ 10 мая 2019

Попробуйте использовать PERFORM и измените ENDIF на END IF.

...
IF ubicacion IS NULL THEN
    PERFORM dblink_exec('conne2', 'INSERT INTO Editorial VALUES (nombre, CIF);');
ELSE
    PERFORM dblink_exec('conne1', 'INSERT INTO Editorial VALUES (nombre, CIF, ubicacion);');
END IF;
...
...