Определение заявления о PostgreSQL и libpq - PullRequest
1 голос
/ 04 декабря 2011

Это может звучать глупо, но мне нужно будет определить, какой тип оператора SQL (INSERT, SELECT, UDATE и т. Д.) Имеет уже подготовленный оператор на PostgreSQL при работе над программой на C с libpq.

Позвольте мне объяснить это немного по-другому: я разрабатываю небольшое приложение на C, используя библиотеку libpq, которая обеспечивает доступ к базам данных PostgreSQL.У меня есть готовый оператор для PostgreSQL (с использованием команды PQprepare), но я хотел бы узнать, прежде чем запускать его, что это за оператор SQL (SELECT, ...).

Почему вы можете спросить?Давайте просто скажем, что приложение читает запросы SQL из другого источника, то есть они не жестко запрограммированы.Конечно, я могу просто проанализировать SQL в своем приложении перед отправкой его в PostgreSQL, но для меня было бы ОЧЕНЬ удобно, чтобы PostgreSQL мог сделать это для меня.

В качестве примера, Oracle через свою библиотеку OCI можетвернуть эту информацию.

1 Ответ

1 голос
/ 05 декабря 2011

Вы можете запросить системный каталог:

SELECT * FROM pg_prepared_statements

Содержит подробную информацию о подготовленных утверждениях, включая «строку запроса, представленную клиентом» в столбце statement.
Подробнее в руководстве здесь .

Имейте в виду, что один действительный оператор SQL может содержать все эти ключевые слова одновременно: INSERT, SELECT, UDATE (например, в записываемом предложении WITH).

...