我有两个功能
1。 函数getSQLServerData 返回任何sql数据(如果正常 - 返回数据,如果错误 - 打印异常并返回$ null)
2。 函数getAllCustomers 调用函数getSQLServerData ...
@allcustomers = getSQLServerData -conn $connection -query $q
当系统检测到函数getSQLServerData中的异常并将其打印时,会出现此问题。因为打印的exeption用作返回值。
是否存在如何解决问题的明确方法?
我不明白,为什么打印输出用作值,当存在有效的返回值时。
PS: 当我想到一个干净的解决方案时,我的意思是任何开关将功能形式模式“所有输出作为返回值”切换为“仅返回值作为返回值”或类似的东西: - )。
function getSQLServerData
{
param(
[PSObject] $sci, #SqlConnectionInfo
[string] $q
)
if($debug){write-host "processing... " $q}
try{
if($sci.w)
{
$connectionString = "Server="+$sci.s+";Database="+$sci.d+";Connect Timeout=3;Integrated Security=True;"
}
else
{
$connectionString = "Server="+$sci.s+";Database="+$sci.d+";Connect Timeout=3;Integrated Security=False;uid="+$sci.u+"; pwd="+$sci.p+";"
}
if($debug){write-host $connectionString}
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $q
$result = @()
$result = $command.ExecuteReader()
$table = new-object "System.Data.DataTable"
$table.Load($result)
$connection.Close()
return $table
}
catch [System.Data.SqlClient.SqlException]
{
write-host "SQL Error"
write-host "Exeption: {0}" $_.Exception.Message
return 1
}
catch [System.SystemException]
{
write-host "Unknown error"
write-host "Exeption: {0}" $_.Exception.Message
return 2
}
}