我有一个代码块被重复执行,但只有表名被更改。
SQLData stagingData = runtime.SQLExecuteQuery(integrationDatabase, "SELECT COUNT (*) AS ROW_COUNT FROM *<DATABASE NAME>*");
foreach(SQLDataRow stagingDataRow in stagingData)
{
stageCount = runtime.SQLDataRowGetInteger(stagingDataRow, "ROW_COUNT");
}
if(stageCount !=0)
{
writeStaging = runtime.SQLExecuteStoredProcedure(integrationDatabase, "*<STORED PROCEDURE NAME>*", 0);
SQLData transformedData = runtime.SQLExecuteQuery(integrationDatabase,
"SELECT COUNT (*) AS ERROR_COUNT FROM *<TABLE NAME>* WHERE " +
"[Entity] LIKE '_ERROR_%' OR [Name] LIKKE '_ERROR_'%");
foreach (SQLDataRow transDataRow in transformedData)
{
errorCount = runtime.SQLDataRowGetInteger(transDataRow, "ERROR_COUNT");
}
if (errorCount == 0)
{
writeTransformed = runtime.SQLExecuteStoredProcedure(integrationDatabase, "*<STORED PROCEDURE NAME>*", 0);
}
else
{
return false;
}
}
这是重复执行的代码块。斜体的项目是唯一的变化。
我们想减少这部分的行数,但我们就是找不到一个好的结构来做。
我们希望听到你的建议。
p、 我们在一个类中执行这个。
谢谢您。
1条答案
按热度按时间bfrts1fy1#
对多个表执行相同的操作通常是不好的模式设计。请详细说明你的计划。
您可以编写一个存储过程来构造(通过
CONCAT
,PREPARE
,EXECUTE
)对多个表执行相同的查询。它也可以审问information_schema.TABLES
查找表名。SELECT COUNT (*) AS ROW_COUNT FROM *<DATABASE NAME>*
这是不可能的。你能做到的COUNT(*)
在表上,而不是数据库上(术语问题?一个“数据库”包含几个“表”;表包含“行”数据。)