我的查询看起来像这样:
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
当param:p_name设置为 FOO 时,我收到如下错误:
[42703]错误:列“FOO”不存在
当我手动将其设置为包含单引号'FOO'时,它可以正常工作。
我尝试过填充转义单引号。我试过了quote_ *函数。我使用“@”“$”和“?” params stypes。这种情况不断涌现。
修改
尽可能地消除,我在IntelliJ的SQL控制台中尝试了以下内容
SELECT * from A where A.B = :p1
SELECT * from A where A.B = ?
SELECT * from A where A.B = @p1
在编辑框中添加“Foo”参数。在所有这三种情况下,我都遇到了同样的问题。当我在编辑框中添加'Foo'时,我得到了我期望的结果。
我还用过prepareStatement和?而不是callableStatement with:p1,也得到了相同的结果。
我做错了什么?
修改
从JDBC URL中删除“stringtype = unspecified”似乎会使问题消失。这就是为什么你不应该只是复制片段或其他人的代码,只是假设它适合你。