Как записать данные, извлеченные из БД, в двумерный массив и как это можно получить обратно в Perl?

Ниже я попытался записать данные в двумерный массив (array_source), но в итоге оказался в одномерном массиве (array_source). Ниже приведен фрагмент кода, пожалуйста, просмотрите и дайте мне знать, как записать его в двумерный массив, чтобы он мог быть.

$DBHd = DBI->connect( "dbi:Oracle:host=$host;port=$port;sid=$SID", $user_name, $password);
$DBSth = $DBHd->prepare("SELECT EMP_ID,sal FROM emp");
$DBSth->execute();
my @array_temp;
my @array_source; # Should be 2D array and it should contain both values
my @array_source_in; # Should contain only employee IDS alone

while (my @array= $DBSth->fetchrow_array())
{
    push (@array_source, @array[0,1]);
    push (@array_source_in, @array[0]);
};

 print "Data in source : @array_source";
   print "\n";
 print "Data in input : @array_source_in";

Как только данные извлекаются в array_source, как это можно сравнить с другим 2D-массивом и перечислить соответствующие наборы?

Пример:

Array 1 - Source Array [100 5100, 101 5100, 102 6000, 104 7879, 444 287299, 771 111]

Массив 2 - должен сравниваться с источником [100 5100, 101 5200, 102 0, 772 800, 104 7879]

Массив 3 - это должен быть вывод - одиночный размер [100, 104]

Пожалуйста, сохраните выравнивание для вышеуказанных массивов и рассмотрите 1 и 2 как двухмерные и 3 как одномерные.

1 ответ

Решение

push (@array_source, @array[0,1]); должен стать push (@array_source, [@array[0,1]]); - вы хотите поместить новый массив в массив верхнего уровня.

Другие вопросы по тегам