具有多个输入变量的PowerShell Invoke-Sqlcmd存储过程查询

时间:2017-02-16 22:38:02

标签: powershell sql-server-2012

我有一个SQL Server存储过程,我试图通过PowerShell运行,但只是无法使用多个参数的语法。

存储过程需要3个输入参数,但其中任何一个(或全部)都可能有多个值传递给它。我可以很好地传递单个变量,但在尝试添加多个值时会出错。

 void addNewPacient() {
    count++;
    pacients = (Pacient*)realloc(pacients, sizeof(Pacient)*count );
    ......//many scanf...
}
void removeLastElement() {
    count--;
    pacients = (Pacient*)realloc(pacients, count * sizeof(Pacient*));
}

$SqlItems = "Items='0212014080804','0212014080630','0212014080620'" $SQLLogs = "Lobs=''" $SQLCodes = "CC=''" Invoke-Sqlcmd -Query "EXEC proc_BS_Course_Migration @Items=`$(Items), @Lobs=`$(Logs), @CC=`$(CC)" -Variable $SQLItems, $SQLLogs, $SQLCodes 上面的代码运行正常时。只要这些变量中的任何一个变长,脚本就会死掉(在SQL本身中正常工作)

我正在运行PowerShell 5,SQL Server 2012,以防它重要

1 个答案:

答案 0 :(得分:0)

你尝试过这样的事吗?这是推荐的方式:

Invoke-SQLCommand -connectionString $sqlConnStr -commandText "proc_BS_Course_Migration" -commandType StoredProcedure -parameters @{"@Items" = "'0212014080804','0212014080630','0212014080620'", "@Lobs" = "''", "@CC" = "''" }