Как я могу получить имена полей SQL временной таблицы, используя Perl? - PullRequest
3 голосов
/ 06 апреля 2009

Ниже приведен код, который я использую для выполнения запроса, разбора набора результатов и разбора строк (соответственно)

$exec_ret = $DBS->SQLExecSQL($STMT);

while ($DBS->SQLFetch() == *PLibdata::RET_OK)
{
      $rowfetch = $DBS->{Row}->GetCharValue($colname[$i]);
}

Могу ли я получить имя столбца / поля временной таблицы, используя похожий синтаксис? $colname[$i] предопределено в верхней части для хранения имен столбцов / полей. Сейчас это жестко запрограммировано, но я бы предпочел автоматизировать его, помещая значения в $colname внутри цикла, который выполняется до разбора строк.

Ответы [ 2 ]

6 голосов
/ 06 апреля 2009

Какой модуль вы используете для доступа к базе данных? Я не распознаю имена методов.

Если вы используете DBI , вы можете получить имена столбцов из дескриптора оператора после его выполнения:

my $sth = $dbh->prepare($STMT);
$sth->execute;
my $columns = $sth->{NAME_uc};

while (my $row = $sth->fetch) {
  for my $i (0 .. $#$row) {
    print "$columns->[$i]: $row->[$i]\n";
  }
  print "\n";
}

Существует 3 версии имен столбцов: NAME дает имена столбцов по мере того, как база данных возвращает их, NAME_lc преобразует их во все строчные буквы, а NAME_uc преобразует их во все прописные. Если вам небезразлична независимость базы данных, я советую вам избегать NAME и использовать один из двух других.

0 голосов
/ 06 апреля 2009

Попробуйте запустить SHOW TABLE yourtable и обработать его, как если бы он был SELECT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...