C#에서 저장 프로시저를 활용할 때 다음과 같은 코드를 접하는 것이 일반적입니다.
string sql = "GetClientDefaults"; SqlCommand cmd = new SqlCommand(sql); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@computerName", computerName);
그러나 다음과 같은 질문이 생깁니다. cmd.CommandType = 라인입니까? CommandType.StoredProcedure; 필요하며, 이를 사용하지 않을 경우 발생할 수 있는 잠재적인 영향은 무엇입니까?
성능 테스트에 따르면 SQL Server는 CommandType.Text 또는 CommandType.StoredProcedure 사용 여부에 관계없이 매개 변수화를 수행합니다. 그러나 CommandType.StoredProcedure를 사용하면 SQL Server에서 매개 변수화가 더 효율적으로 수행됩니다. 이로 인해 CommandType.StoredProcedure를 사용하면 속도가 향상됩니다.
CommandType.Text를 사용할 때 CommandText 자체에 매개변수 이름을 포함하는 것이 중요합니다. 이는 SQL Server에서 문을 매개 변수화하는 데 사용되는 sp_executesql 래퍼가 매개 변수 이름을 자동으로 전달하지 않기 때문입니다. 따라서 적절한 실행을 보장하려면 이를 수동으로 지정해야 합니다.
예를 들어 다음과 같은 프로시저를 생성하는 경우
create procedure dbo.Test ( @Text1 varchar(10) = 'Default1' ,@Text2 varchar(10) = 'Default2' ) as begin select @Text1 as Text1, @Text2 as Text2 end
그런 다음 CommandType.Text를 사용하여 호출하면 다음을 포함해야 합니다. CommandText의 매개변수 이름:
string callText = "dbo.Test @Text1, @Text2";
그렇지 않으면 지정된 매개변수가 아님을 나타내는 오류가 발생합니다. 제공됩니다.
요약:
위 내용은 C#에서 저장 프로시저를 실행할 때 `cmd.CommandType = CommandType.StoredProcedure;`가 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!