2009-08-31 6 views
1

간단한 절차로 작성합니다. 발사의오라클의 값을 비교할 때 오류가 발생했습니다.

DECLARE 
    connection_id LINE.CONNECTION_ID%TYPE := 11009; 
    tmp_integer INTEGER; 
BEGIN 
    SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = 11009; 
    DBMS_OUTPUT.PUT_LINE(connection_id); 
    DBMS_OUTPUT.PUT_LINE(tmp_integer); 
END; 

결과 :

11009 
3 

그것은 좋은 결과입니다.

11009 
30997 

실수는 다음과 같습니다

DECLARE 
    connection_id LINE.CONNECTION_ID%TYPE := 11009; 
    tmp_integer INTEGER; 
BEGIN 
    SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = connection_id; 
    DBMS_OUTPUT.PUT_LINE(connection_id); 
    DBMS_OUTPUT.PUT_LINE(tmp_integer); 
END; 

그러나이 경우

내가 이상한 결과를 얻을 : 나는 CONNECTION_ID가 11009. 수정 후 만 3 행이?

답변

3

PL/SQL 변수의 이름을 테이블의 열 이름과 다르게 변경하십시오. v_connection_id.

+0

예, 이것은 실수입니다. 감사! –

+0

환영합니다. 추가 참고 사항 - PL/SQL 변수와 열 이름 간의 충돌 가능성을 줄이는 코딩 스타일을 채택하는 것이 좋습니다. v_COLUMN_NAME 또는 vCOLUMN_NAME - 코드에서 쉽게 찾아 낼 수 있었지만 커서가 길고 변수가 많은 패키지는 많은 시간 낭비 디버깅을 유발할 수 있습니다. – dpbradley

관련 문제