Ora-06553 pls-306 неправильный номер или типы аргументов в вызове "ogc x"

Im пытается выполнить запрос в 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'

кто-нибудь знает что не так в моем запросе?

3 ответов


вы использовали двойные кавычки на "X".

это должно быть 'X'.

объект X является функцией в схеме MDSYS, "ogc_x", поэтому, когда вы говорите est.tipo_estatus = "X" вместо правильного est.tipo_estatus = 'X' он переводится (как ""является идентификатором, поэтому" X " - это то же самое, что просто ввести X) в est.tipo_estatus = mdsys.ogc_x и, конечно, не удается.


попробовать 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'

Я обнаружил, что эта ошибка была сгенерирована, потому что я использовал зарезервированные слова Oracle для названия некоторых моих столбцов, например даты, времени, комментария и т. д. Как только я переименовал столбцы, проблема исчезла.