Несколько параметров в powershell

У меня есть скрипт PowerShell для вызова SP, который показан ниже

 $sqlTableConnection = New-Object [System.Data.SqlClient.SqlConnection]("Server=1xx.xx.xxx; Database=dbName; Integrated Security= True");

    $sqlTableCmd = New-Object [System.Data.SqlClient.SqlCommand]
    $sqlTableCmd.CommandText = "[System_Control].[usp_Check_system]"
    $sqlTableCmd.Connection = $sqlTableConnection;
    $jobName1 = "MASTER_JOB";
    $sqlTableCmd.Parameters.AddWithValue("@JobName", $jobName1) ;
    $outParameter = new-object System.Data.SqlClient.SqlParameter;
    $outParameter.ParameterName = "@JobSatatus";
    $outParameter.Direction = [System.Data.ParameterDirection]'Output';
    $outParameter.DbType = [System.Data.DbType]'Boolean';
    $sqlTableCmd.Parameters.Add($outParameter) ;
    $sqlTableCmd.Connection = $sqlTableConnection
     $sqlTableConnection.Open();
    $sqlTableCmd.ExecuteNonQuery();
    $truth = $sqlTableCmd.Parameters["@JobSatatus"].Value;
    $sqlTableConnection.Close();
    $truth;

но когда я запускаю это, я получаю ошибку ниже

Exception calling "ExecuteNonQuery" with "0" argument(s): "The variable name '@
JobName' has already been declared. Variable names must be unique within a quer
y batch or stored procedure."
At line:15 char:33
+     $sqlTableCmd.ExecuteNonQuery <<<< ();
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Где я делаю ошибку?

1 ответ

Решение

Вы должны получить эту ошибку только в том случае, если вы не инициализируете объект SqlCommand, и поэтому для него уже определено @JobName.

Я подозреваю, что вы получаете это при запуске вручную, а не при выполнении сценария в целом..

ИЛИ, если вы видите это все время, то, возможно, вы переместили этот код в функцию, но исходный $sqlTableCmd был инициализирован в основном коде, и теперь, когда он выполняется, он находится в другой области видимости, но его смущает тот, который был определен в более высоком объеме?

Насколько я понимаю, эта строка должна быть свежей для вас:

$sqlTableCmd = New-Object [System.Data.SqlClient.SqlCommand]

Другие вопросы по тегам