oracle ora-06553 pls-306调用'ogc_x'时参数的数量或类型错误

qf9go6mv  于 2023-02-03  发布在  Oracle
关注(0)|答案(4)|浏览(596)

我正在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'时参数的数量或类型错误
有谁知道我的查询出了什么问题吗?

hkmswyz6

hkmswyz61#

您在"X"上使用了双引号。
这应该是'X'
X对象是MDSYS模式中的函数“ogc_x”,因此当你说est.tipo_estatus = "X"而不是正确的est.tipo_estatus = 'X'时,它被翻译成est.tipo_estatus = mdsys.ogc_x(因为“”是作为标识符,所以“X”与仅仅键入X相同),并且当然失败。

chhqkbe1

chhqkbe12#

尝试使用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'
vsdwdz23

vsdwdz233#

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

qxgroojn

qxgroojn4#

列不存在时也会出现此问题

相关问题