我有两个while循环,一个在另一个循环中,它们遍历两个不同的数据集,我希望外部while循环的第一行数据遍历内部while循环中的所有行,查找匹配项,如果不匹配,则移动到外部循环中的第二行,再次循环遍历内部while循环中的所有记录。但是,在第一个外部循环的记录遍历了内部循环中的所有记录之后,外部循环中的第二行不会遍历内部循环中的记录;这就好像第一次尝试遍历内部循环中的所有记录时并没有将自己重置回开始位置!这是我的代码--有人能告诉我哪里出错了吗?
$PgConnString = "select pgName from table1"
$MsConnString = "SELECT msName FROM table2";
$PgDbConn = CreateDbConnection "Postgres";
$PgDbCmd = CreateDbCommand $PgConnString $PgDbConn;
$PgReaderOutput = $PgDbCmd.ExecuteReader();
$MsDbConn = CreateDbConnection "MSSql";
$MsDbCmd = CreateDbCommand $MsConnString $MsDbConn;
$MsReaderOutput = $MsDbCmd.ExecuteReader();
while ($PgReaderOutput.Read())
{
$ReporterName = $PgReaderOutput.GetValue(0);
Write-Output "Current Reporter is: $ReporterName";
while ($MsReaderOutput.Read())
{
$CurrMsRec = $MsReaderOutput.GetValue(0);
Write-Output "Current SQL record is: $CurrMsRec";
if($CurrMsRec -eq $ReporterName)
{
$Match = 1
Write-Output "Matched"
}
else
{
Write-Output "No Matched"
$Match = 0;
}
}
If($Match -eq 1)
{
Write-Output "The reporter: $ReporterName has not been sent an email; send them one!";
}
}发布于 2014-11-08 08:18:27
在内部循环中,您将遍历$MsReaderOutput.Read()返回的所有元素。当这个内部循环第一次完成时,您不会对外部循环中的$MsReaderOutput做任何更改,因此下次处理它时不可能有更多的元素。
我假设您希望在每个内部循环开始之前重置$MsReaderOutput对象,这样您就可以再次开始迭代它。
https://stackoverflow.com/questions/26812111
复制相似问题