티스토리 뷰
■ 에러
ORA-01008: 일부 변수가 바인드되지 않았습니다.
이 에러를 간단하게 해결할 수 없는 경우 아래의 3가지 가능성이 있다.
개발툴을 이용한 고유의 문제(= 불량)은 제외한다.(각 공급 업체의 버그정보 or FAQ 등을 참조하길)
대부분의 경우는 단순히 바인드 변수의 설명 누락, 코멘트를 쓰는 것을 간과하거나 등의 부주의로 인한 실수이다.
(좀 노가다이지만,, 어떻게도 해결할 수 없는 경우에는 종이로 인쇄해서 직접 확인해보면 발견할 수도 있음)
■ 원인1
한국어(일본어) 표기의 식별자를 인용 식별자로 정의하지 않은 경우에 발생할 수 있다.
■ 대응방법
한국어(일본어)를 사용하는 경우에는 인용 식별자로 올바르게 기술한다.
따옴표로 콜론(:)까지 묶지 말기.
ex) (틀림) ":name" ⇒ (맞음) :"name"
■ 원인2
시스템 고유의 동적 SQL에 있어서
SQL과 PL/SQL 블록에서의 플레이스 홀더와 바인드 변수의 관계를 오해하고 있을 가능성이 있다.
■ 대응방법
시스템 고유의 동적 SQL의 플레이스 홀더와 바인드 변수 참조
■ 원인3
디폴트 설정에서는 유효하게 되어있지 않은, 그 버전의 「신기능」을 사용함으로써 발생하는 일이 있다.
■ 대응방법
기본적으로는 지원이 됨.
디폴트 설정에서 변경해 새로운 기능을 유효하게 하고 있는 경우에는 설정을 디폴트로 되돌려 본다.
디폴트 설정은 아마도 전세계에서 가장 테스트되는 환경이니까..
지원 계약을 맺고 있는 경우에는 최신 버전의 Oracle이 아니면 패치가 제공되고 있을 가능성이 높기 때문에
역시 지원이 된다.
■ 원인4
이유는 잘모르겠지만 CALL(Oralce 9i~) 특유의 문제로
number를 되돌리는 function f와 SQL*Plus 상의 바인드 변수 var n number에 대해
SQL > call f(1) into :n;을 실행하면, 바인드 되지않았다는 에러가 발생했다.(Oracle 10.2.0.1.0)
■ 대응방법
*플레이스홀더(placeholder)명 인식문제..
SQL> call f(1) into :n ; 과 같이 세미콜론 앞에 스페이스를 넣으니 문제없이 실행되는 것을 보니
n;을 한 단어로 인식한 것 같다.
SQL*Plus에서의 바인드 변수명은 한글자나 예약어와 비슷한 문자로 하지 않는 것이 좋은 것 같음..
* 플레이스홀더(placeholder) : 나중에 실제 문자나 숫자등이 나타나는 위치를 나타내는 것.
예를 들어, 개발 도중에 만들 내용이 아무것도 없는 서브 루틴이나, 프레젠테이션・소프트의 점선으로 나타내지는
사용자가 입력해야 할 텍스트 박스 등 여러가지가 있다.
흔히 html에서 input태그에 옵션인 placeholder로 텍스트를 설정하면 해당 텍스트가 회색글자로 들어가있는 것.
사용자가 입력을 하면 사라짐.
■ 에러
ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다.
■ 원인
- Total
- Today
- Yesterday
- 시간차이
- vba
- commit
- PL/SQL 예외처리문
- PL/SQL 실행문
- BEGIN절
- 초기화파라미터파일
- REVOKE
- DBA_SYS_PRIVS
- 유틸리티
- TrimEnd
- in/out/ref 차이점
- EXCEPTION절
- 유틸리티에러
- 에러
- pl/sql
- Oracle
- in/out/ref 예제
- VB.Net
- rollback
- DECLARE절
- grant
- in/out/ref
- NLog
- USER_SYS_PRIVS
- 참조전달
- 후나빙
- in/out/ref 공통점
- 동기통신
- C#
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |