2015-02-02 4 views
1

현재 입력 테이블의 행을 처리하고 각 레코드에 대해 가능한 많은 결과가있는 매우 복잡한 프로그램을 작성하고 있습니다. 이 때문에 나는 결과 메시지를 위해 정의 된 매우 많은 수의 상수를 가지고있다. 기록에는 성공 메시지가 하나 있지만 가능한 많은 경고와 오류가 있습니다.많은 양의 상수를 관리하는 가장 좋은 방법은 무엇입니까

첫 번째 생각은 패키지 본문 수준에서이 메시지에 대한 모든 상수를 정의하는 것이지만 각 상수를 사용되는 절차로 옮기기로 결정했습니다. 나는 이제 그 결정을 추측하고 모든 것을 패키지 몸체 수준으로 되돌릴 생각을하고 있습니다. 이 많은 상수를 정의하는 가장 좋은 방법은 무엇입니까? 유지 관리 용이성은 너무 복잡하기 때문에이 프로그램의 궁극적 인 목표입니다.

+0

많은 결과 메시지가 있다면 개인적으로 조회 표에 추가 할 것을 고려하고 있습니다. 그렇게하면 프로 시저 코드에서 if/then/else 또는 case 문을 많이 사용하는 대신 효율적인 쿼리를 사용하여 한 번에 모두 얻을 수있는 옵션이 있습니다. 그러나 YMMV. –

답변

4

이것은 맛의 문제라고 생각합니다. 내 응용 프로그램에서 모든 오류 코드를 오류 패키지에 넣습니다. 모든 주요 및 일반적으로 사용되는 상수는 별도의 패키지 (패키지 본문 제외)에 넣습니다.

+0

감사합니다. 매우 유용합니다! – odinsride

3

다시 말하지만 맛의 문제가 있지만 응용 프로그램의 어느 부분에서나 참조 할 수 있도록 패키지 본문보다는 패키지 사양 수준에 명명 된 상수 목록을 넣는 경향이 있습니다. c_err_for_specific_reason_x가 사용하는 오류 코드를 변경하고 싶다면 그렇게 할 수있는 단일 장소가됩니다.

코드를 숨기고 코드를 본문에 넣고 싶으면 올바른 상수 이름을 전달하는 변환을 수행 한 get_error_code (p_get_error_name varchar) 함수가 있어야합니다.

나는 다른 프로젝트에서이 모든 작업을 수행했지만, 대부분의 경우 기능에 대한 목록을 선호합니다. 필자는 테이블 중심의 데이터 소스 인 경우이 함수를 사용하는 경향이 있습니다.

+0

감사합니다. 매우 유용합니다! – odinsride

0

... 기다려 ... 의존!

현재 패키지 본문에 상수를 정의 했으므로 패키지 외부에서 공개적으로 액세스 할 필요가 없습니다. 따라서 사양으로 정의하면 아무 것도 사지 않습니다.

다음은 내가 따라야 할 규칙입니다. 필요한 가장 작은 범위 내에서 상수를 정의하십시오. 따라서 상수가 하나의 프로 시저에서만 사용되는 경우 해당 프로 시저에서 상수를 정의하십시오. 둘 이상의 프로 시저에서 사용되는 경우, 본문에 정의하십시오. 특정 패키지를 사용할 때만 다른 패키지 (또는 패키지되지 않은 SP)의 코드로 다른 곳에서 사용되는 경우 해당 패키지의 스펙에 정의하십시오. 다른 코드에서 일반적인 용도로 사용하는 경우 일반 상수의 별도 사양에 넣으십시오.

관련 문제