PowerShell:如何确定SQL查询是否返回0行

时间:2016-05-09 18:09:48

标签: sql sql-server powershell

我有一个脚本运行一个select语句然后通过一个阅读器,但是当语句中没有返回任何行时,它会跳过阅读器并在以后的脚本中导致错误。

我希望我的脚本可以执行以下操作:

(a)如果select语句返回行,则通过阅读器并完成脚本,或

(b)如果没有返回任何行,则执行其他操作并向主机写入没有返回任何行的内容。

以下是我目前在该部分脚本中的内容:

$SQLQuery = $("SELECT [Column1] FROM [MyDatabase].[dbo].[MyTable] WHERE Column1 > 0")

$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
$Reader = $Command.ExecuteReader()
while ($Reader.Read()) {
    ## do some stuff
}

$Connection.Close()

## The rest of the script.....

我想让我的脚本执行此操作:

IF (SQL output returns rows) {
    do stuff
}
ELSEIF (SQL output returns 0 rows) {
    tell me 0 rows were returned
}

感谢。

2 个答案:

答案 0 :(得分:4)

检查SqlDataReader上的HasRows属性 您可能希望先检查if,然后查看是否有行返回,如果有,则继续阅读。

$arrTotal = [[2016/05/04,9],[2016/05/03,14],[2016/05/02,16]];

答案 1 :(得分:1)

如果使用了阅读器,您可以设置变量,然后再进行检查。

$processed=$false
while ($Reader.Read()) {
    $processed=$true
    ## do some stuff
}

if ($processed) {
    ## at least one row was found
} else {
    ## no rows were found
}