我有一个看起来像这样的查询:
SELECT A.A, A.B, B.A, B.C, B.D
FROM tableone A, tabletwo B
WHERE A.A = B.A
AND B.C = :p_name
当参数 :p_name 设置为FOO时,我收到如下错误:
[42703] 错误:列“FOO”不存在
当我手动将其设置为包含单引号'FOO'时,它可以工作。
我试过填充转义的单引号。我已经尝试了 quote_* 函数。我试过用“@”“$”和“?” 参数类型。这不断出现。
编辑
尽我所能消除,我从 IntelliJ 的 sql 控制台尝试了以下操作
SELECT * from A where A.B = :p1
SELECT * from A where A.B = ?
SELECT * from A where A.B = @p1
并在编辑框中添加“Foo”参数。在所有三种情况下,我都会遇到同样的问题。当我将“Foo”添加到编辑框时,我得到了我期望的结果。
我还使用了preparedStatement 和?而不是带有 :p1 的 callableStatement 并且也得到了相同的结果。
我究竟做错了什么?
编辑
从 JDBC URL 中删除“stringtype=unspecified”似乎可以解决问题。这就是为什么你不应该只是复制代码片段或其他人的代码并假设它对你有用。