Как обработать тип данных sql_Variant sql с помощью Powershell - PullRequest
0 голосов
/ 18 февраля 2019

Я использую оболочку power для выполнения одной из хранимых процедур, которая имеет один из параметров с типом данных sql_Variant и находится в SSISDB (системная хранимая процедура)

Поскольку sql_variant поддерживает тип данных, который я передаюint, string & boolean типы данных.

хранимая процедура выполняется нормально, когда я передаю строковый тип данных.но не int и boolean.

Имя процедуры:

Catalog.Set_Object_Parameter_Value

У него есть один параметр с типом данных SQL_Variant.Ниже приведен снимок экрана.

enter image description here

При вводе значения на основе некоторых условий я получу тип данных int / string / bool.

КакМогу ли я обработать / преобразовать эти значения в тип данных Sql_Variant перед вводом с помощью Power-shell.

В настоящее время моя команда power-shell выглядит примерно так:

$procSignature = "EXEC [catalog].[set_object_parameter_value] @object_type,@folder_name,@project_name,@parameter_name,@parameter_value,@object_name";
                            $cmd = New-Object System.Data.SqlClient.SqlCommand;
                            $cmd.Connection = $catalogConnection;
                            $cmd.CommandText = $procSignature;
                            $cmd.Parameters.AddWithValue("@object_type", $Scope ) | Out-Null;
                            $cmd.Parameters.AddWithValue("@folder_name", $FolderName ) | Out-Null;
                            $cmd.Parameters.AddWithValue("@project_name", $ProjectName ) | Out-Null;
                            $cmd.Parameters.AddWithValue("@parameter_name", $ParmeterName ) | Out-Null;
                            $cmd.Parameters.AddWithValue("@parameter_value", $ParmeterValue ) | Out-Null;
                            $cmd.Parameters.AddWithValue("@object_name", $object ) | Out-Null;

1 Ответ

0 голосов
/ 25 марта 2019

У меня была точно такая же проблема с точно таким же SP.Попробуйте это:

$cmd.Parameters.AddWithValue("@parameter_value", $ParameterValue -As $ParameterValue.GetType().Name) | Out-Null;
...