1

这可能听起来很傻,但我需要确定哪种 SQL 语句(INSERT、SELECT、UDATE 等)在 PostgreSQL 上已经准备好语句,同时使用 libpq 处理 C 程序。

让我稍微解释一下:我正在 C 上开发一个小型应用程序,使用提供对 PostgreSQL 数据库的访问的 libpq 库。我在 PostgreSQL 上有一个准备好的语句(使用 PQprepare 命令),但我想知道,在运行它之前,什么样的 SQL 语句是(SELECT,...)。

为什么你可能会问?假设应用程序从另一个来源读取 SQL 查询,也就是说,它们不是硬编码的。当然,我可能只是在将应用程序上的 SQL 发送到 PostgreSQL 之前对其进行解析,但对我来说,PostgreSQL 可以为我做这件事会非常方便。

例如,Oracle 通过其 OCI 库可以返回此信息。

4

1 回答 1

1

您可以查询系统目录:

SELECT * FROM pg_prepared_statements

它包含有关准备好的语句的详细信息,包括列中的“客户端提交的查询字符串” statement
在此处的手册中阅读更多信息

请注意,一条有效的 SQL 语句可以同时包含所有这些关键字:INSERT, SELECT, UDATE(例如在可写的 WITH 子句中)。

于 2011-12-05T00:03:23.593 回答