6

我正在尝试在 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”时参数的数量或类型错误

有谁知道我的查询出了什么问题?

4

3 回答 3

11

您在 . 上使用了双引号"X"

这应该是'X'

X 对象是 MDSYS 模式中的一个函数,“ogc_x”,所以当你说est.tipo_estatus = "X"而不是正确est.tipo_estatus = 'X'时,它会被翻译(因为“”是一个标识符,所以“X”与只是键入 X 相同)est.tipo_estatus = mdsys.ogc_x当然失败。

于 2012-12-03T16:50:13.820 回答
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'
于 2012-12-03T16:43:48.633 回答
1

我发现这个错误的产生是因为我使用了Oracle保留字来命名我的一些列,例如日期、时间、评论等。一旦我重命名了这些列,问题就消失了。

于 2017-09-15T06:34:11.950 回答