有没有办法通过Perl中的DBI获取列的前导区间精度?

时间:2012-03-07 18:45:11

标签: perl odbc dbi

我需要能够在perl脚本中为ODBC表中的列获取以下列属性:

  • SQL类型
  • 精密
  • 缩放
  • 区间领先精度
  • 类型名
  • 是签名还是未签名
  • 可空
  • 是否区分大小写
  • 是否是自动唯一
  • 可更新

现在我正在使用DBI,似乎我可以得到most这些信息,但我很难得到间隔超前精度。 DBI是否公开了这个?

1 个答案:

答案 0 :(得分:0)

那个pod(我写的)是针对SQLColAttributes的。发生的事情是MS弃用SQLColAttributes并用SQLColAttribute替换它。顺便说一句,在pod中有一个拼写错误,因为它应该是$ $ $不是$ dbh(我刚刚解决了这个问题)。在大多数情况下,ColAttributes现在被DBI属性取代,例如PRECISION。您无法使用DBD :: ODBC将新的SQLColAttribute类型传递给SQLColAttributes,因为它只知道ODBC为SQLColAttributes定义的那些以及ODBC允许的特定于驱动程序的属性(DBD :: ODBC无法知道其类型)必须捕获它们并发出“不支持特定于驱动程序的列属性”消息。

请参阅SQLColAttribute,其中列出了您可以传递给ColAttribute的所有值。你必须在sql * .h头文件中查找值。但是,我没有在列表中看到区间超前精度。我确实看到SQL_DESC_PRECISION说“对于数据类型SQL_TYPE_TIME,SQL_TYPE_TIMESTAMP,以及表示时间间隔的所有间隔数据类型,其值是小数秒组件的适用精度。”。所以我不确定你的“间隔领先精度”是什么意思。

您使用的是什么ODBC驱动程序?