使用Java的PreparedStatement时,无法检测到问号占位符。当调用statementName.setLong(1, 123)时,它会抛出错误"The column index is out of range: 1, number of columns: 0"。我的示例来自Postgres 8.4,但该问题在SQL到达SQL服务器之前就已经出现了。
与一些正常工作的预处理语句进行比较后,我发现有问题的语句包含一个类似于子查询的内容。
与一些正常工作的预处理语句进行比较后,我发现有问题的语句包含一个类似于子查询的内容。
SELECT * FROM (
SELECT DISTINCT (name)
id,
name
FROM MyTable
WHERE id > ?
ORDER BY name) AS Level1
ORDER BY 1