2009-10-15 3 views
1

저장 프로 시저를 실행하는 데 문제가 있습니다 ...이 자동 생성 t-sql 쿼리의 문제점은 무엇입니까?

저장 프로 시저를 호출하려고하는 C# 코드가 있습니다. 그것은 다음과 같이 다소 같습니다

DataTable myDataTable = new DataTable(); 
using (SqlConnection connection = new SqlConnection(myConnectionString)) 
{ 
    SqlCommand selectCommand = new SqlCommand("MyStoredProc", connection); 
    selectCommand.Parameters.Add(new SqlParameter("@myGuid", myGuid)); 
    SqlDataAdapter da = new SqlDataAdapter(selectCommand); 
    da.Fill(myDataTable); 
} 

내가 그것을 실행할 때, 나는 "근처의 구문이 잘못되었습니다 'MyStoredProc'"라는 오류를 얻을. 저도 같은 일을하려고하면 나도 같은 오류가 발생,

exec sp_executesql 
N'MyStoredProc', 
N'@myGuid uniqueidentifier', 
@myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

있는지를 충분히 : 나는 SqlProfiler을 실행하면

은, 나는 이런 식으로 내 저장된 프로 시저를 실행하려는 것 것을 알 수있다. 따라서 내 질문은 다음과 같습니다.

  1. 생성 된 쿼리에는 어떤 문제가 있습니까?
  2. 왜 C#이 잘못된 쿼리를 생성합니까? 내 C# 코드에서 뭔가 잘못 했니?

편집 : Agent_9191 내가 어리석게의 StoredProcedure로 SelectCommand에 유형을 설정하는 문을 떠난다 ... 그것을 못을 박았다. 새로 생성 된 쿼리는 다음과 같습니다.

exec MyStoredProc @myGuid='FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF' 

이 작업은 정상적으로 작동합니다.

+0

오류가 발생하는 실제 저장 프로 시저를 표시하십시오. 내 직감은 C# 코드가 아니라 SQL에 문제가 있다는 것입니다. –

+0

@Josh : nope ... 그게 아니야 ... 'MyStoredProc'을 임의의 문자열 (존재하지 않는 proc 디렉토리)으로 대체 할 수 있으며 여전히 오류가 발생합니다 ... 실제로 구문 오류입니다. 호출. – Beska

답변

7

selectCommand.CommandType = CommandType.StoredProcedure을 설정해야합니다.

+0

오, 세상에 ... 그건 내 바보 같은 짓이었다. – Beska

+0

우리 중 최고 일이있다. :) –