PLS-00103 에러나는것 질문 드립니다. ㅜㅜ 0 10 4,546

by 꼰복 [PL/SQL] SYMBOL PLS ORACLE [2018.11.20 11:33:35]


"?" 심볼을 만났다고 에러가 나는데, ? 물음표를 쓴게 없거든요..

단순히 패키지 안의 함수를 링크사용해서 불러온것 뿐인데, 왜 이런 에러가 나는지 알 수 있을까요?

사정상 코드는 공유하지 못하고 ㅜㅜ 단순히

패키지.함수@링크(변수들);

이게 끝이거든요.. 쉼표도 빠진게 없는것 같고, 마지막에 세미콜론도 하고, 이 후에 commit; 명령어도 적어줬는데,

에러나는 line, column을 보면 파라미터 변수의 첫번째를 가리키고 있더라구요..

근데 "(" 이러한 심볼도 아니고 "?" 이걸 만났다고 나오니...쓴적도 없는데 ㅜㅜ혹시 이런 경험하신 분 계신가요..

by 마농 [2018.11.20 11:43:26]

그대로는 옮기지 못하더라도 비슷하게는 올려주세요.
"변수들" 이라고 하지 마시고, 가상의 변수 리스트를 만들어 보여 주세요.
commit 도 했다 이런식으로 적지 마시고. 실제 커밋 구문을 올려주세요.


by 꼰복 [2018.11.20 11:56:00]

 

넵넵. 아래와 같이 변수명만 바꿔서 올렸는데 혹시 알수 있을까요 마농님 ㅜ.ㅜ

BEGIN

 select t.A as A,
        t.B as B,
        t.C as C,
        t.D as D,
        t.E as E,
        t.F as F
    INTO V_A, V_B, V_C, V_D, V_E, V_F
    from TABLE t
    where t.A = :P_A
      and t.B = :P_B;

EXCEPTION
    WHEN OTHERS THEN
      V_CNT := 0;
  END;


IF :V_COMPARE IS NOT NULL AND :V_COMPARE <> V_D THEN
        Package.procedure1@link(
                                             V_A,   -- 에러라고 찍히는 위치
                                             V_B,
                                             :P_A,
                                             :P_B,
                                             V_C,
                                             'COMPARE', 
                                             :V_COMPARE,
                                             '',
                                             V_INFORESULT); 
        COMMIT;
        Package.procedure2@link(
                                               V_A,
                                               V_B,
                                               :P_A,
                                               :P_B,
                                                V_C,
                                               'COMPARE2',
                                               'COMPARE22',
                                               V_D,
                                               :V_COMPARE, 
                                               :USERID, 
                                               V_DATARESULT);
        COMMIT;
    END IF;

요런 식으로 되어있습니당.


by 마농 [2018.11.20 12:13:29]

변수명에 콜론(:) 사용한게 좀 이상하네요.
PLSQL 에서는 콜론 사용 안합니다.


by 꼰복 [2018.11.20 13:01:50]

아 말씀을 다 못드렸는데ㅜ.ㅜ 저게 c#내에서 호출하는거라 콜론(:)된건 c#에서의 변수를 받아오는 것입니다 ㅜㅜ

저것 말고는 이상한 점은 안보이시져?ㅜ.ㅜ에효오오오 계속해서 알아봐야겟네용..ㅜㅜ고맙습니다 마농님


by 마농 [2018.11.20 13:24:31]

v_a 등의 변수 선언부가 안보이구요.
IF 문이 begin ~ end 밖에 있네요.
일부만 올리신건가요? 정확히 파악이 안됩니다.


by 꼰복 [2018.11.21 08:19:13]

네네 너무 길어서 ㅜ.ㅜ 해당 변수값 갖고 오는 부분들만 빼낸건데.. ㅜㅜ그래도 도움 감사합니다 마농님


by 봉 [2018.11.20 14:02:31]

V_A, V_B 같은 조회한 데이타 값 중에서 ? 문자를 포함한 데이타가 조회되고 있지는 않나요?


by 꼰복 [2018.11.21 08:20:18]

네 ㅜ.ㅜ V_A, V_B에 저장되는 값들은 단순 문자열들이고 특수문자는 들어가지 않는데 ㅜㅜ V_B에 / 값이 들어가는데..다른데서 사용하는게 있는데 거긴 잘 되더라구요..ㅜㅜ후우으으으후으으우으으


by 마농 [2018.11.21 11:11:43]

구문 오류는 사소한 부분에서 뜻하지 않게 발생하는 경우가 대부분이고.
작성자가 하루종일 쳐다봐도 안보이는게 주변인이 보면 금새 찾는 경우가 종종 있죠.
일부 자료만 축소 변형시켜 올리시면 오류를 찾기 어려울 것 같네요.


by 꼰복 [2018.11.21 11:38:15]

마농님 드디어 해결했습니다. 도움 감사합니다

이게 보니깐 제가 패키지.프로시저 호출하는걸 다른데 작성하고 복사해서 코드에 집어넣었는데, 그런 경우에 이런 알수없는 경우가 발생하기도 하나보더라구요. 보이는 건 아무런 에러가 없는데 복사 붙여넣기하면서 ..이상하게

똑~같이 그냥 코드 다시 작성하니 되더라구요...도움감사합니다 마농님~!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입