我正在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条答案
按热度按时间hkmswyz61#
您在
"X"
上使用了双引号。这应该是
'X'
。X对象是MDSYS模式中的函数“ogc_x”,因此当你说
est.tipo_estatus = "X"
而不是正确的est.tipo_estatus = 'X'
时,它被翻译成est.tipo_estatus = mdsys.ogc_x
(因为“”是作为标识符,所以“X”与仅仅键入X相同),并且当然失败。chhqkbe12#
尝试使用
DISTINCT
:vsdwdz233#
我发现这个错误是因为我使用了Oracle保留字来命名我的一些列,例如日期、时间、注解等。一旦我重命名了这些列,问题就消失了。
qxgroojn4#
列不存在时也会出现此问题