Lors de l'utilisation de procédures stockées en C#, il est courant de rencontrer du code comme celui-ci :
string sql = "GetClientDefaults"; SqlCommand cmd = new SqlCommand(sql); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@computerName", computerName);
Cependant, la question se pose : la ligne est-elle cmd.CommandType = CommandType.StoredProcedure ; nécessaire, et quelles sont les implications potentielles de ne pas l'utiliser ?
Selon les tests de performances, SQL Server effectue le paramétrage, que vous utilisiez CommandType.Text ou CommandType.StoredProcedure. Cependant, lors de l'utilisation de CommandType.StoredProcedure, le paramétrage est effectué plus efficacement par SQL Server. Cela se traduit par un avantage de vitesse pour l'utilisation de CommandType.StoredProcedure.
Lors de l'utilisation de CommandType.Text, il est crucial d'inclure les noms de paramètres dans le CommandText lui-même. En effet, le wrapper sp_executesql, utilisé par SQL Server pour paramétrer l'instruction, ne transmet pas automatiquement les noms des paramètres. Par conséquent, vous devez les spécifier manuellement pour garantir une bonne exécution.
Par exemple, si vous créez une procédure comme celle-ci :
create procedure dbo.Test ( @Text1 varchar(10) = 'Default1' ,@Text2 varchar(10) = 'Default2' ) as begin select @Text1 as Text1, @Text2 as Text2 end
Et puis l'appelez en utilisant CommandType.Text, vous devez inclure les noms des paramètres dans le CommandText :
string callText = "dbo.Test @Text1, @Text2";
Sinon, vous rencontrerez une erreur indiquant que le paramètre spécifié n'a pas été fourni.
En résumé :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!