2012-12-03 1 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'호출시 잘못된 숫자 또는 인수 유형

누구든지 내 질문에 잘못된 점을 알고 있습니까? 에리? DISTINCT

+3

집계를 사용하지 않으므로'DISTINCT '가 필요합니다. – Kermit

+3

게시 한 오류가 쿼리의 아무 곳에 나 나타나지 않는 함수 ('ogc_x')를 어떻게 참조합니까? 게시 한 쿼리와 게시 한 오류가 함께 발생 했습니까? 'FROM' 절의 객체 중 하나가'ogc_x' 함수를 참조하는 뷰입니까? 또한 Oracle의 문자열은 큰 따옴표가 아닌 작은 따옴표로 묶여 있습니다. Oracle에서'= "X"'를 사용하면 구문 오류가 발생합니다. 그것은 당신이 게시 한 것과 다른 구문 오류 일 것입니다. –

답변

6

.

'X'이어야합니다.

은 X 개체는 MDSYS 스키마의 함수입니다 "ogc_x", 그래서 당신은 "로 (대신 번역됩니다 올바른 est.tipo_estatus = 'X'est.tipo_estatus = "X"을 말할 때 X"그래서 식별자이다 ""바로 입력과 동일 X)를 est.tipo_estatus = mdsys.ogc_x으로 변경하고 물론 실패합니다.

1

보십시오 : 당신이 "X"에 따옴표를 사용했습니다

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

오라클 예약어를 사용하여 일부 열의 이름을 지정했기 때문에이 오류가 발생하는 것으로 나타났습니다. 날짜, 시간, 설명 등. 열의 이름을 바꾸면 문제가 사라졌습니다.

관련 문제