C# 测试表是否至少有某些存储过程,否则测试c失败
此测试将检查是否只有一个SP以Insert、Load或Save结尾,然后检查是否成功C# 测试表是否至少有某些存储过程,否则测试c失败,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,此测试将检查是否只有一个SP以Insert、Load或Save结尾,然后检查是否成功 //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_N
//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;
}
}
我想做的是在没有以Insert、Load或Save结尾的存储过程时中断while循环。i、 e.每个表应至少有这三个SP,否则测试将失败撇开这是否是正确的方法不谈,您需要更改逻辑以分别检查每种类型的程序是否存在:
bool insertExists = false;
bool loadExists = false;
bool saveExists = false;
while (list_SP.Read())
{
if (list_SP[0].ToString().EndsWith("Insert"))
{
insertExists = true;
}
if (list_SP[0].ToString().EndsWith("Load"))
{
loadExists = true;
}
if (list_SP[0].ToString().EndsWith("Save"))
{
saveExists = true;
}
if (insertExists && loadExists && saveExists)
{
Console.WriteLine("All three exist");
break;
}
}
if (!insertExists)
{
Console.WriteLine("Missing insert");
}
if (!loadExists)
{
Console.WriteLine("Missing load");
}
if (!saveExists)
{
Console.WriteLine("Missing save");
}
情不自禁:你在胡闹!为什么不在应用程序中执行此操作:从中选择后缀选择“插入”作为后缀联合所有选择“加载”作为后缀联合所有选择“保存”作为后缀左外部连接信息\u SCHEMA.ROUTINES r on ROUTINE\u定义如“%CLNT\u table\u name%”+后缀和例程\u TYPE='PROCEDURE'按后缀分组,具有COUNTROUTINE\u类型 1@Jon:如果我做得对,我就不会在这里发帖了@马丁:我很感谢你的帮助,但我需要c代码