2011-10-04 3 views
1

두 가지 기능이 있습니다. 하나는 작업 할 특정 작업이있는 작업자의 기록을 반환하고 다른 작업자는 특정 작업자에 대한 작업을 반환합니다. 이 두 함수에는 WHERE 절에서 같은 조건을 가진 커서가 있습니다.조건을 한 곳에 병합

제 질문은 어떻게 이러한 조건을 한 곳에서 정의 할 수 있습니까? 그럼 내 코드는 깨지 않을거야 DRY principle.

미리 감사드립니다.

P .: REF CURSORS는 신뢰할 수 없으므로 사용하고 싶지 않습니다.

+1

투표를 종료하려면, 그 이상의 세부 사항을 제공해야합니다, 우리는 마음을 읽는 사람이 아닙니다. – Johan

+0

둘 다 기능에 대한 코드를 보여 주시겠습니까? – MatBailie

+0

@Johan - 네가 영어로 말하는 사람의 작품이 아니지만, 그들이 무엇을 얻고 있는지 이해하기 위해 아는 사람 일 필요는 없다. – APC

답변

4

DRY (자신을 반복하지 말것)의 합리적인 규칙은 삼각 측량이라고 생각합니다. 동일한 논리가 3 개 장소에 존재하면 모듈을 모듈로 추출해야합니다. 그러나 그것이 두 곳에서만 존재한다면 걱정하지 마십시오.

그러나 실제로 자신을 반복하지는 않습니까? 당신이 가지고있는 것은 두 개의 서로 다른 쿼리 두 개의 서로 다른 결과를 반환합니다 (하나는 WORKERS이고 다른 하나는 TASKS 임). WHERE 절은 몇 가지 공통점이 있습니다. 그것은 적절한 반복이 아닙니다.

두 줄의 코드가 같은 일을하는 모든 단일 인스턴스를 근절하려고하면 끔찍하게 읽을 수없고 유지할 수없는 프로그램으로 끝납니다. DRY는 Andy Hunt and Dave Thomas에 의해 공식화되었습니다. 이들은 합리적인 원칙으로 원칙을 적용하고 교리를 맹목적으로 따르는 것보다 자신이 그것을하고있는 이유를 이해한다는 점에서 Pragmatic Programmers라고합니다.

3

REF CURSOR에 관한 귀하의 예약에 관해서는 왜 그들이 신뢰할 수 없다고 생각합니까? 나는 그 (것)들에 어떤 문제도 결코 가지고있다 것이. 무엇이 슬픔을 줄 수있는 지 동적 SQL을 사용하여 참조 커서를 채우는 것입니다. 그러나 이것은 상상의 중복을 제거하는 기능이며 커서 변수를 그대로 사용하는 것과는 아무런 관련이 없습니다.

관련 문제