3

下面是我用来运行查询、解析结果集和解析行的代码(分别)

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

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

我可以使用类似的语法获取临时表的列/字段名称吗? $colname[$i]在顶部预定义以保存列/字段名称。这现在是硬编码的,但我宁愿通过将值推送到$colname在解析行之前运行的循环内部来自动化它。

4

2 回答 2

6

您使用什么模块进行数据库访问?我不认识方法名称。

如果您使用的是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使用其他两种中的一种。

于 2009-04-06T17:02:15.147 回答
0

尝试运行SHOW TABLE yourtable并将其视为 SELECT。

于 2009-04-06T16:06:04.097 回答