2009-09-09 3 views
3

다음 저장 프로 시저를 호출하는 데 문제가 있습니다. ExecuteReader를 호출하면 'GetAverages2'근처에 'Incorrect syntax'오류가 나타납니다. 저장 프로 시저를 만들고 TSQL에서 호출 할 수 있습니다. CommandType.Text에저장 프로 시저를 호출 할 때 구문 오류가 발생합니다. 문제가 무엇인지 알 수 없습니다.

CREATE PROCEDURE GetAverages2 
    @CompanySize INT, 
    @Q1   FLOAT OUT, 
    @Q2   FLOAT OUT 
AS 
    SELECT @Q1 = 1, @Q2 = 2 
GO 

    string connectionString = ConfigurationManager.ConnectionStrings["MyDbConnection"].ConnectionString; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     using (SqlCommand command = new SqlCommand("GetAverages2", connection)) 
     { 
      command.Parameters.Add("@CompanySize", System.Data.SqlDbType.Int).Value = int.Parse(Request.QueryString["CompanySizeId"]); 
      command.Parameters.Add("@Q1", System.Data.SqlDbType.Float).Direction = System.Data.ParameterDirection.Output; 
      command.Parameters.Add("@Q2", System.Data.SqlDbType.Float).Direction = System.Data.ParameterDirection.Output; 
      connection.Open(); 
      SqlDataReader reader = command.ExecuteReader(); 

답변

2

SqlCommand.CommandType 기본값을, 그래서 원시 SQL 문으로 텍스트 "GetAverages2"를 실행하려고 : 나는 ADO에서 작업 얻을 수없는 것. 명령을 만든 직후에이 줄을 추가하십시오.

command.CommandType = CommandType.StoredProcedure; 
+1

나는 바보입니다. – MedicineMan

+0

그냥 같은 함정에 빠졌습니다. 저장 프로 시저를 사용하는 데 너무 익숙해 져서 원시 SQL을 작성하는 것을 상상할 수 없습니다. 참고로 SQL 2008에서이 시나리오에서 반환 된 오류 메시지는 "프로 시저 또는 함수 ''에 ''매개 변수가 제공되지 않았으므로 기대하지 않습니다." –

관련 문제