Powershell iSeries DB2 ODBC返回"算术运算导致溢出。"

时间:2016-07-20 21:23:52

标签: powershell db2 odbc

总结:Powershell 5使用64位ODBC驱动程序进行DB2。 SQL查询选择" Count(*)"作品。查询实际数据"选择字段"返回错误。 32位ODBC驱动程序根本不起作用。这里的一个答案指向ODBC设置(转换二进制数据...)进行转换,但这并没有解决问题。

代码:

$SqlQuery = @"
SELECT MMITNO,
       MMITDS
FROM MITMAS
WHERE MMCONO = 3 
  AND MMITNO = '2658591351'
"@

$Db2Connection = new-object system.data.odbc.odbcconnection
$Db2Connection.connectionstring = "DSN=DB2_MR0P_64;Userid=USSRF_ADM;Password=########"
$Db2Connection.open()

# Set up to run the query
$SqlCmd = New-Object system.Data.Odbc.OdbcCommand($SqlQuery,$Db2Connection)
$DataAdapter = New-Object system.Data.Odbc.OdbcDataAdapter($SqlCmd)
$DataTable = New-Object system.Data.datatable
$RowCount = $DataAdapter.fill($DataTable)

$Db2Connection.close()

# Process the returned datatable
$DataTable.Table[0] | ForEach-object {
  write-host "Total rows in MITMAS is $("{0:N0}" -f $_)."
}

返回: 异常呼叫"填写"用" 1"参数:"算术运算导致溢出。" 在C:\ PowerShellScripts \ TestDB2.ps1:19 char:1 + $ RowCount = $ DataAdapter.fill($ DataTable) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:NotSpecified:(:) [],MethodInvocationException     + FullyQualifiedErrorId:OverflowException

坦率地说,我对我所使用的知识的了解非常有限,我通过复制和粘贴你专家的各种帖子而获得了成功。所以,如果答案很简单,我很抱歉,我只是没有看到它。我唯一可以控制的机器是在iSeries机器上没有管理员权限的本地PC。

1 个答案:

答案 0 :(得分:0)

填充方法使用数据集,而不是数据表。 修改你这样的代码:

 $DataAdapter = new-object System.Data.odbc.odbcDataAdapter($SqlCmd) 
 $DataSet = new-object System.Data.DataSet 
 $DataAdapter.Fill($DataSet)
 foreach ($Row in $DataSet.Tables[0].Rows) 
 {
   #your traitment here
 }