Синтаксис оператора IF на счетчик SQL - PullRequest
0 голосов
/ 21 февраля 2019

В PowerShell я пытаюсь написать оператор if о том, больше ли результат COUNT с SQL Server равен 0. Ниже у меня есть:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Our Connection String"

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT COUNT(*) FROM dbo.Source WHERE SourceId IS NULL"
$SqlCmd.Connection = $SqlConnection

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd

$DataSet = New-Object System.Data.DataSet

$Table = New-Object System.Data.DataTable

$SqlAdapter.Fill($Table) | Out-Null

if ($Table > 0) {
    Write-Output "The Count is greater than zero, please investigate"
}

Я знаю *Заявление 1006 * внизу - это плохой синтаксис, и я пробовал много других способов выразить его безрезультатно.Я запускаю скрипт, я не получаю никаких ошибок, но он просто завершается и ничего не происходит.Я убедился, что если я удалю Out-Null из строки $SqlAdapter.Fill(), PowerShell вернет число, поэтому я знаю все до тех пор, пока эта точка не заработает.

Мне просто нужно заставить его записатьвывод, если число больше 1, что в этом запросе SQL, это определенно.Как бы я написал это if заявление?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Просто сохраните вывод $SqlAdapter.Fill($Table) в переменной, а не подавляя его с помощью Out-Null, а затем проверьте эту переменную.

$cnt = $SqlAdapter.Fill($Table)

if ($cnt -gt 0) {
    # do stuff
}
0 голосов
/ 21 февраля 2019

Это должно делать то, что вы хотите.

if ($Table.Column1 -gt 0) {
    Write-Output "The Count is greater than zero, please investigate"
}

Поскольку вы не предоставляете никакой схемы для своей таблицы данных, счетчик перейдет к имени столбца Столбец1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...