Ce test vérifie si seul un SP se termine par Insérer, Charger ou Enregistrer, puis il réussit.Test si la table a au moins une certaine procédure stockée, sinon échec du test C#
//Query to find SPs for a certain Table name
string check_SP =
"SELECT ROUTINE_NAME, ROUTINE_DEFINITION " +
"FROM INFORMATION_SCHEMA.ROUTINES " +
"WHERE ROUTINE_DEFINITION LIKE '%CLNT_" + Table_Name + "%' " +
"AND ROUTINE_TYPE='PROCEDURE'";
conn2.Open();
SqlCommand cmd_SP = new SqlCommand(check_SP, conn2);
list_SP = cmd_SP.ExecuteReader(); //Write 'check_SP' query results to 'list_SP'
while (list_SP.Read())
{
if (list_SP[0].ToString().EndsWith("Insert")
|| list_SP[0].ToString().EndsWith("Load")
|| list_SP[0].ToString().EndsWith("Save"))
{
Console.WriteLine(list_SP[0]);
test = true;
}
else
{
Console.WriteLine("Missing SP");
test = false;
break;
}
}
Ce que je veux faire est de briser la boucle while chaque fois qu'il n'y a pas de procédure stockée qui se termine par insertion ou de charge, ou Enregistrer. (c'est-à-dire que chaque table doit avoir au moins ces trois SP, sinon le test échouera)
Vous ne pouvez pas l'aider: Vous le faites wroooooooooong! –
Au lieu de le faire dans votre application, pourquoi ne pas faire: 'SELECT Suffixe FROM (SELECT 'Insérer' AS Suffixe UNION ALL SELECT 'Charger' AS Suffixe UNION ALL SELECT 'Enregistrer' Suffixe AS) Suffixe de la jointure externe gauche INFORMATION_SCHEMA.ROUTINES r sur ROUTINE_DEFINITION LIKE '% CLNT_table_name%' + Suffixe AND ROUTINE_TYPE = 'PROCEDURE' groupe par Suffixe ayant COUNT (ROUTINE_TYPE) <> 1' –
@Jon: Si je faisais bien, je ne ferai pas un post ici !! – Reda