1

我正在使用 power shell 执行存储过程之一,该存储过程具有数据类型为 sql_Variant 的参数之一并驻留在 SSISDB(系统存储过程)中

由于 sql_variant 支持多数据类型,我正在传递 int、string 和 boolean 数据类型。

当我传递字符串数据类型时,存储过程执行得很好。但不是 int 和 boolean。

过程名称是

目录.Set_Object_Parameter_Value

它有一个数据类型为 SQL_Variant 的参数。下面是屏幕截图。

在此处输入图像描述

根据某些条件输入值时,我将获得 int/string/bool 数据类型。

在使用 Power-shell 输入之前,如何处理/将这些值转换为 Sql_Variant 数据类型。

目前我的 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;
4

1 回答 1

0

我在完全相同的 SP 上遇到了完全相同的问题。尝试这个:

$cmd.Parameters.AddWithValue("@parameter_value", $ParameterValue -As $ParameterValue.GetType().Name) | Out-Null;
于 2019-03-25T15:43:23.367 回答