我想我知道解决方案,但我想得到第二个意见。
我有一个名为Get-Data的函数,它从Oracle数据库中检索并返回DataTable。现在,由于Powershell对SUPER有帮助,当Oracle只返回一条记录时,该函数返回DataRow而不是DataTable。
如果发生这种情况并且其中一列是LONG DataType,则该字段将被截断为100个字符。
明显的解决方案是返回,$ dt并修改我的代码来处理它。但是,正如我所说,我想要第二个意见。
GET-数据:
function Get-Data
{
[Cmdletbinding()]
Param
(
[Parameter(Position=0,Mandatory=$True)]$Conn,
[Parameter(Position=1,Mandatory=$True)]$sql
)
#Open the connection to the DB if closed
if($Conn.state -eq 'Closed')
{
$Conn.open()
}
#Create objects for querying the DB
$readcmd = New-Object system.Data.OleDb.OleDbCommand($sql,$Conn)
$readcmd.CommandTimeout = '300'
$da = New-Object system.Data.OleDb.OleDbDataAdapter($readcmd)
$dt = New-Object system.Data.datatable
#Query the DB and fill the DataTabe with records
[void]$da.fill($dt)
return $dt
}
答案 0 :(得分:0)
好的,所以我找到了问题的根源。
使用此sql语句从具有LONG数据类型的表中进行选择时:
Select * from [table]
OLEDB从ORACLE
返回LONG字段的全部内容对同一个表使用以下查询时:
Select distinct * from [table]
OLEDB仅返回LONG字段的前100个字符