질문: COBOL-DB2 프로그램은 변수 길이를 PIC X(5)에서 PIC X(8)로 늘리도록 변경되었습니다. 그러나 프로그램의 SQL에는 변경 사항이 없습니다. 프로그램의 계획/패키지가 이러한 변경 사항에 구속되지 않으면 어떻게 됩니까?
PIC X(5)에서 PIC X(8)로의 가변 길이 변경은 DB2 변경이 아니며 프로그램의 SQL 문을 수정할 필요가 없습니다. 그러나 여전히 계획/패키지를 바인딩해야 합니다. 그렇지 않으면 "로드된 모듈의 사전 컴파일러에 의해 생성된 타임스탬프 x가 DBRM z에서 빌드된 바인딩 타임스탬프 y와 다릅니다"라는 SQL 오류 코드 -818을 받게 됩니다. p>
이 SQL 오류의 원인은 다음과 같습니다. - COBOL-DB2 프로그램을 실행할 때마다 로드된 모듈과 패키지/DBRM의 타임스탬프를 비교합니다. 프로그램에서 변수의 길이가 변경되고(SQL은 변경되지 않음) 컴파일되면 로드된 모듈은 새로 생성된 타임스탬프를 갖게 됩니다. 반면 BIND가 실행되지 않으면 로드된 모듈은 새로 생성된 타임스탬프를 갖게 됩니다. . 패키지/DBRM에는 이전 타임스탬프가 있습니다. 프로그램이 실행되면 프로그램을 호출하는 JCL 단계가 SQL 오류 코드 -818과 함께 실패합니다.
SQL 문이 미래에 절대 변경되지 않는 COBOL-DB2 프로그램이 있는 경우 LEVEL 옵션을 사용하여 프로그램을 사전 컴파일할 수 있습니다. 다음은 LEVEL 옵션을 이용한 BIND 단계의 예이다.
//BIND EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DIS.TEST.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(TB3) BIND PLAN(PLANA) - PKLIST(PACKA) - LEVEL - ACQUIRE(ALLOCATE) - ISOLATION (RS) /*
위 내용은 BIND가 없는 프로그램에서 비SQL 변경이 수행되면 실행 결과는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!