2010-07-26 3 views
2

SQL Server 저장 프로 시저 (토론, fooSproc)를 호출하고 SqlDataReader로 결과를 처리하는 .NET 클래스 (토론, ClassA 용)가 있습니다. 행이 처리되고 리턴 된 결과 세트의 열 이름을 사용하여 열이 참조됩니다. 예를 들어, dr은 SqlDataReader이고 dr [ "column_foo"]와 같습니다.sproc과 호출 코드의 불일치로 인해 빌드 오류가 발생할 수 있습니까?

예를 들어 누군가가 ClassA에 대한 변경 사항을 확인하여 fooSproc에서 반환 한 결과 집합에서 column_bar를 찾고 있다고 가정 해 보겠습니다. 그러나 그 사람은 fooSproc에 대한 변경 사항을 실제로 체크하지 않아 column_bar를 실제로 반환합니다.

문제 : 코드가 컴파일되지만 누락 된 열로 인해 런타임에 오류가 발생합니다.

이 시나리오로 인해 빌드 오류가 생성 될 수 있습니까? 당연히 빌드 확인/수용 테스트가 여기에 적합하지만 이전에이를 잡는 것이 더 저렴합니다. 피상적 인 코드 검토조차도 범위를 벗어난 것으로 판단하십시오.

답변

1

. 닷넷과 SQL을 사용하여 코드를 컴파일 할 때 코드에 연결해야한다는 것을 모르는 방법이 있습니다.

즉, 코드를 작성할 때 db (바로)에 액세스해야하고 쿼리를 구문 분석해야합니다. VS는 그렇게하지 않습니다. Linq-to-SQL과 Entity Framework를 사용하면 더 가까워 질 수는 있지만 특정 시나리오 (저장 프로 시저 변경)를 도울 수는 없을 것입니다.

.NET SMO (Sql Management Objects)를 사용하여 무언가를 만들 수도 있지만 데이터베이스를 연결하기 위해 데이터베이스에 연결해야 할 수도 있습니다. 근본적인 문제는 확인해야 할 것 같습니다. 스토어드 프로 시저 (Stored Procedure)는 원래 쓰여졌을 때의 결과를 여전히 반환하며, SQL은 쉽게 접근 할 수있는 형태로 데이터를 제공한다고 생각하지 않는다.

2

기본적으로 아니요. 항상 런타임 오류가 발생합니다.

이 무엇이든을 AutoSProc를 사용하여 반영, 구문 분석, 실행 여부 SQL 서버에 대한 코드를 실행에 당신은 항상있을 것이다. SQL Server는 Excel/VBA 또는 Visual Studio에 상관하지 않습니다. 단지 다른 고객 일뿐입니다.

관련 문제