Несколько параметров в 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]