ca9*_*3d9 5 sql-server powershell
我有一个参数类型为 的存储过程nvarchar(max)。我需要在 PowerShell 中调用它。
// $s can be a long string with all kind of charaters, ', new line, etc.
Invoke-Sqlcmd -ServerInstance Server "exec MyProc '$s'"
Run Code Online (Sandbox Code Playgroud)
$s但是,当has (我知道我可以通过将''替换为but 来处理这种情况)或 等时,上述调用不能很好地工作。而且它还存在 SQL 注入的风险。'''\n\r
这是一种无需字符串连接即可调用存储的方法吗?
Mas*_*all -1
使用-Variable参数Invoke-Sqlcmd.
$vars = @("VAR1=$s")
Invoke-SqlCmd -ServerInstance Server "exec MyProc @procParam=`$(VAR1)" -Variable $vars
Run Code Online (Sandbox Code Playgroud)
这将自动转义特殊字符并避免 SQL 注入。
我相信(如果我错了,请纠正我)您需要说明要传递给存储过程的参数。这就是@procParam上面代码中的内容。
注意:反引号美元符号 ( `$) 很重要,否则字符串将在到达函数之前展开,从而导致错误。您还可以将引号切换为单引号,这样就不需要反引号了。
需要注意的是,-Variable仅接受 String 数组。这意味着要删除单个值,您必须使用语法@()来表示数组(如示例中所示)。
| 归档时间: |
|
| 查看次数: |
4704 次 |
| 最近记录: |