这可能听起来很傻,但我需要识别哪种SQL语句(INSERT, SELECT, UDATE,其他)在PostgreSQL上已经准备好了语句,同时使用libpq编写C程序。
让我稍微解释一下:我正在用C语言开发一个小应用程序,使用libpq库提供对PostgreSQL数据库的访问。我在PostgreSQL上有一个准备好的语句(使用PQprepare命令),但我想知道,在运行它之前,什么样的SQL语句是(SELECT,…)。
你可能会问为什么?假设应用程序从另一个源读取SQL查询,也就是说,它们不是硬编码的。当然,我可能只是在发送给PostgreSQL之前解析我的应用程序上的SQL,但对我来说,PostgreSQL可以为我做这件事是非常方便的。
只是一个例子,Oracle通过它的OCI库可以返回这个信息。
可以查询系统目录:
SELECT * FROM pg_prepared_statements
保存准备语句的详细信息,包括statement
列中的"客户端提交的查询字符串"。
在这里阅读更多手册。
请注意,一个有效的SQL语句可以同时包含所有这些关键字:INSERT
, SELECT
, UDATE
(例如,在一个可写的WITH子句中)。