Как получить серверные сообщения (повысить уведомление) из функции PostgreSQL с помощью Groovy Sql - PullRequest
0 голосов
/ 11 июля 2019

Я сохранил функцию в PostgreSQL, в которой у меня есть оператор PL/PGSQL, подобный следующему:

raise notice 'Message text';

У меня также есть приложение Groovy, которое использует класс Sql по умолчанию для вызова этой функции.Я хочу получать сообщения (поднять уведомление) от функции, которые отображаются в stdout или вошли в мое приложение Groovy.

Я создал проект PoC для проверки этого: https://github.com/lospejos/groovy-jdbc-get-server-messages

Пожалуйста, найдите комментарий в Groovyfile: https://github.com/lospejos/groovy-jdbc-get-server-messages/blob/master/call_db_function.groovy

Я также нашел это: https://stackoverflow.com/a/23087861/1828296 Но я не могу понять, как получить Statement объект из Sql instance.

1 Ответ

0 голосов
/ 12 июля 2019

Для блага остальных.Чтобы получить сообщения сервера от сохраненной функции, вызовите SQL следующим образом:

def sql = Sql.newInstance('jdbc:postgresql://localhost/postgres', 'postgres', 'postgres')

final String paramValue = "Param value"

sql.query("select * from testme(param => :paramValue)", [paramValue: paramValue]) { resultSet ->
    def rsRows = [:]
    while (resultSet.next()) {
        rsRows << resultSet.toRowResult()
    }
    def warning = resultSet.getStatement().getWarnings()
    while (warning) {
        println "[${LocalDateTime.now()}] [${warning.getSQLState()}] ${warning.message}"
        warning = warning.nextWarning
    }
    println rsRows
}

Я также обновил код репозитория.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...