2012-12-03 68 views
6

oracle 10gでクエリを試行しています。それはこのように書きます:ora-06553 pls-306 '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"; 

だからsmootly動作しますが、私はそれがして、グループを追加しようとすると:

ORA-06553 PLS:

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; 

私は次のメッセージが表示されます-306 'ogc_x'への呼び出しで間違った数または引数のタイプ

誰かが私の質問で間違っていることを知っていますかエリー?

+3

集計を使用していないので、「DISTINCT」が必要です。 – Kermit

+3

投稿したエラーがどのようにクエリのどこにも表示されない関数( 'ogc_x')を参照していますか?投稿したクエリと投稿したエラーが一緒になっていることを確認してください。 'FROM'節のオブジェクトの1つは' ogc_x'関数を参照するビューですか?また、Oracleの文字列は二重引用符で囲まれていない一重引用符で囲まれています。 Oracleで '=" X "'を使用した場合、構文エラーが発生します。あなたが投稿したものとは異なる構文エラーになります。 –

答えて

6

あなたは"X"に二重引用符を使用しました。

'X'です。

Xオブジェクトは、MDSYSスキーマの機能である「ogc_x」、あなたは「として(代わりに、それが翻訳さ正しいest.tipo_estatus = 'X'est.tipo_estatus = "X"を言うときX」そう識別子としてある「」だけで入力するのと同じですX)をest.tipo_estatus = mdsys.ogc_xに変更してももちろん失敗します。

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

このエラーは、Oracle予約語を使用して列の名前をいくつか指定したために発生しています。日付、時刻、コメントなどが表示されます。列の名前を変更すると、問題は消えました。

関連する問題