Powershell在SQL EXEC之前单引号参数中的所有数组元素

问题描述

我有下面的代码段,并且一切正常,除了看起来好像没有值都用单引号引起来,存储过程给出了这些提示。

在执行SQL之前,是否有办法告诉它将$p中的每个元素都用单引号引起来?

$p包含30个不同的元素,可以是数字或字母数字。

Param (
    [Parameter(Mandatory=$true)][array]$p
)
Process {
    $conn = New-Object System.Data.SqlClient.SqlConnection
    $conn.ConnectionString = "Data Source=OurServer;Initial Catalog=OurDatabase;Integrated Security=true"

    $cmd = New-Object System.Data.SqlClient.SqlCommand
    $cmd.Connection = $conn
    $cmd.CommandTimeout = 0
    $cmd.CommandText = "EXEC sp_test $p"
}

解决方法

有许多更新数组元素的选项:

# Using -replace
$p = $p -replace '^.*$','''$&'''

# Using foreach-object and string format operator
$p = $p | Foreach-Object { "'{0}'" -f $_ }

# Using foreach method
$p = $p.foreach({"'$_'"})

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...