是否有任何方法可以执行如下查询:
SELECT * FROM 17187::regclass;
其中SELECT 17187::regclass;tablename
通过EXECUTE在函数中实现这一点很容易,但我想在没有函数的情况下实现它。
谢谢。

最佳答案

你当然需要执行。原因如下:
SQL查询在执行时通过一个管道。大致如下:
分析查询的标识符与值
如果适用,将创建一个“门户”,并从参数中填写值文本
如果适用,将对查询进行规划和优化
查询被执行。
这样做的一个结果是,您只能参数化值文本,而不能参数化标识符。此外,实用程序语句从未被计划或参数化(因此您不能对create user中的任何内容进行参数化,尽管这是本次讨论的外围内容)。
我不认为这根本不可能,但目前PostgreSQL的工作方式不支持这一点。

10-06 13:08