我在oracle 10g中尝试查询。它是这样的:
SELECT
*
FROM
h2h_reg reg,
h2h_cat_estatus est
WHERE
reg.FECH_APLICACION = SYSDATE
AND REG.ID_EST = EST.ID_ESTATUS
AND est.tipo_estatus = "X";
所以它顺利运行,但当我尝试通过以下方式添加组时:
SELECT
reg.id_arch,
reg.id_prod
FROM
h2h_reg reg,
h2h_cat_estatus est
WHERE
reg.FECH_APLICACION = SYSDATE
AND reg.id_est = est.id_estatus
AND EST.TIPO_ESTATUS = "X"
GROUP BY
reg.id_arch,
reg.id_prod;
我收到下一条消息:
ora-06553 pls-306调用'ogc_x'时参数的数量或类型错误
有人知道我的查询有什么问题吗?
答案 0 :(得分:9)
您在"X"
使用了双引号。
这应该是'X'
。
X对象是MDSYS架构中的一个函数,“ogc_x”,所以当你说est.tipo_estatus = "X"
而不是正确的est.tipo_estatus = 'X'
时,它会被翻译(因为“”作为标识符,所以“X” “就像输入X一样”到est.tipo_estatus = mdsys.ogc_x
,当然也失败了。
答案 1 :(得分:1)
尝试DISTINCT
:
SELECT DISTINCT reg.id_arch, reg.id_prod
FROM h2h_reg reg, h2h_cat_estatus est
WHERE reg.FECH_APLICACION = SYSDATE
AND reg.id_est = est.id_estatus
AND est.tipo_estatus = 'X'
答案 2 :(得分:1)
我发现生成此错误是因为我使用了Oracle保留字来命名我的一些列,例如日期,时间,评论等。一旦我重命名列,问题就消失了。