You need to enable JavaScript to run this app. 如何在Perl连接SQL Server查询时同时返回列名与结果集
优惠活动
大模型
产品
解决方案
定价
更多

如何在Perl连接SQL Server查询时同时返回列名与结果集

你可以通过DBI statement handle提供的{NAME}属性直接获取查询结果的列名,在遍历结果行前先打印列名即可实现需求,修改后的代码如下:

my $sql = "SELECT top (20) [code] AS Code
      ,Replace(Replace(Replace(Replace(Replace(Replace(Replace
      (Replace(Replace(Replace(Replace
      ([name],'“','&quot;'),'”','&quot;'),'<= ','&le;'),'>=','&ge;'),'<','&lt;'),'>','&gt;'),CHAR(10),'<br>'),'\n',' '),CHAR(13),' '),'–','-'),'’',NCHAR(39)) AS ShortDesc
      ,Replace(Replace(Replace(Replace(Replace(Replace(Replace
      (Replace(Replace(Replace(Replace
      ([description],'“','&quot;'),'”','&quot;'),'<= ','&le;'),'>=','&ge;'),'<','&lt;'),'>','&gt;'),CHAR(10),'<br>'),'\n',' '),CHAR(13),' '),'–','-'),'’',NCHAR(39)) AS LongDesc
      ,CASE WHEN isobsolete = 0 THEN 'NULL' ELSE 'Y' END AS Obsolete
      
FROM (
     SELECT ROW_NUMBER() OVER(PARTITION BY code ORDER BY effectivefromdate DESC) rn, * 
     FROM [CodingSuite_STG].[Codes].[Hcpcs] ) cs
     WHERE  rn=1 
     order by code asc";
     
my $sth = $dbh->prepare( $sql );

# 执行查询
$sth->execute();

# 获取并打印列名
my @col_names = @{$sth->{NAME}};
print "@col_names\n";
# 如需列名和内容之间加分隔线,可取消注释下一行
# print "-" x length("@col_names") . "\n";

while ( my @row = $sth->fetchrow_array ) {
     print "@row\n";
}

# 关闭连接
$sth->finish();
$dbh->disconnect();

$sth->{NAME}返回的列名顺序和你SELECT语句中声明的列顺序完全一致,且会自动获取你定义的AS别名,不需要额外调整即可匹配你声明的Code、ShortDesc等字段名。如果需要输出规整对齐的表格效果,可以提前统计所有行每列的最大字符宽度,按固定宽度格式化打印即可。

内容的提问来源于stack exchange,提问作者user15796482

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 13:06:02