我有一个脚本运行一个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
}
感谢。
答案 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
}