Powershell和SQL参数.如果为空字符串,则传递DBNull

前端之家收集整理的这篇文章主要介绍了Powershell和SQL参数.如果为空字符串,则传递DBNull前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个参数: @H_301_2@$objDbCmd.Parameters.Add("@telephone",[System.Data.sqlDbType]::VarChar,18) | Out-Null; $objDbCmd.Parameters["@telephone"].Value = $objUser.Telephone;

字符串$objUser.Telephone可以为空.如果它是空的,我怎么能将它转换为[DBNull] :: Value?

我试过了:

@H_301_2@if ([string]:IsNullOrEmpty($objUser.Telephone)) { $objUser.Telephone = [DBNull]::Value };

但这给了我错误

Exception calling “ExecuteNonQuery” with “0” argument(s): “Failed to convert parameter value from a ResultPropertyValueCollection to a String.”

如果我将它转换为字符串,它会插入一个空字符串“”,而不是DBNull.

如何实现这一目标?

谢谢.

解决方法

在PowerShell中,您可以将null /空字符串视为布尔值. @H_301_2@$x = $null if ($x) { 'this wont print' } $x = "" if ($x) { 'this wont print' } $x = "blah" if ($x) { 'this will' }

所以….说你可以这样做:

@H_301_2@$Parameter.Value = $(if ($x) { $x } else { [DBNull]::Value })

但我更倾向于将其包装在以下函数中:

@H_301_2@function CatchNull([String]$x) { if ($x) { $x } else { [DBNull]::Value } }
原文链接:https://www.f2er.com/mssql/76657.html

猜你在找的MsSQL相关文章