postgresql / greenplum参数绑定在jdbc上,为什么它认为它是一个列名?

时间:2011-06-09 02:08:56

标签: jdbc parameters greenplum

我的查询看起来像这样:

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”似乎会使问题消失。这就是为什么你不应该只是复制片段或其他人的代码,只是假设它适合你。

0 个答案:

没有答案