2012-12-03 17 views
6

Sto provando una query in Oracle 10g. Va in questo modo:ora-06553 pls-306 numero errato o tipi di argomenti in chiamata a 'ogc_x'

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"; 

modo che venga eseguito smootly, ma quando ho provato l'aggiunta di un gruppo:

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; 

ottengo il messaggio successivo:

Ora-06553 pls -306 numero errato o tipi di argomenti in chiamata a 'ogc_x'

Qualcuno sa cosa c'è che non va nel mio ery?

+3

È necessario 'DISTINCT' poiché non si utilizzano aggregati. – Kermit

+3

Com'è che l'errore che hai postato fa riferimento a una funzione ('ogc_x') che non appare in nessuna parte della tua query? Sei sicuro che la query che hai postato e l'errore che hai postato vanno insieme? Uno degli oggetti nella clausola 'FROM' è una vista che fa riferimento alla funzione' ogc_x'? Inoltre, le stringhe in Oracle sono racchiuse tra virgolette singole e doppie virgolette. Se hai usato '=" X "' in Oracle, ciò genererebbe un errore di sintassi. Tuttavia, sarebbe un errore di sintassi diverso da quello che hai postato. –

risposta

6

hai utilizzato le virgolette doppie su "X".

questo deve essere 'X'.

l'oggetto X è una funzione nello schema MDSYS, "ogc_x", in modo che quando si dice est.tipo_estatus = "X" invece del corretto est.tipo_estatus = 'X' che si traduce (come "" è come un identificatore in modo "X" è lo stesso che solo digitando X) a est.tipo_estatus = mdsys.ogc_x e, naturalmente, fallisce.

1

Prova con 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' 
1

Ho trovato che questo errore è stato generato perché avevo usato parole riservate di Oracle per nominare alcune delle mie colonne, ad es. data, ora, commento, ecc. Una volta rinominato le colonne il problema è scomparso.

Problemi correlati