我正在致力于报表自动化,我需要能够处理多个SQL查询,一个接一个,然后将这些结果转储到CSV文件中。我需要调用两个存储过程来生成存储必要数据的临时表。我已经通过一个SP调用以及一个准备和执行工作了。但是,当我引入第二个SP并准备/执行时,它不起作用并立即失败。
$getStoreData
返回一行信息,其中$getDepartmentData
返回多行信息。两者没有相同数量的标题。即使将它限制为使用两个SP调用进行一个数据查询,我也会得到相同的行为,因此我假设它在多个SP调用上均失败。但是我不确定。
eval {
$executeStoreDataSP = $storeConnection->prepare($storeDataSP);
$executeStoreDataSP->execute() or $logger->error("Failed to execute store SP.");
$executeDepartmentDataSP = $storeConnection->prepare($departmentDataSP);
$executeDepartmentDataSP->execute() or $logger->error("Failed to execute dept SP.");
$getStoreData = $storeConnection->prepare($storeDataSql);
$getStoreData->execute() or $logger->error("Failed to gather store-level data.");
$getDepartmentData = $storeConnection->prepare($departmentDataSql);
$getDepartmentData->execute() or $logger->error("Failed to gather department-level data.");
};
if ($@) {
$logger->info("Failed to extract data for $storeInfo[0].");
}
else {
# Print Store Info/Data
$reportCsv->print($reportOutput, \@headersStoreData);
$reportCsv->print($reportOutput, $getStoreData);
# Print Department Data
$reportCsv->print($reportOutput, \@headersDepartmentData);
while (my $reportData = $getDepartmentData->fetchrow_arrayref) {
$reportCsv->print($reportOutput, $reportData);
}
}
运行脚本时,它立即评估为失败了先前的条件。我已经分别测试了它们,并且它们在MySQL CLI中运行时可以正常工作。我不确定为什么会立即失败。我希望它能像以前一样写入结果。