【问题标题】:How to call a stored procedure with a char parameter from Powershell如何从 Powershell 调用带有 char 参数的存储过程
【发布时间】:2018-05-29 21:44:22
【问题描述】:

我有一个 Powershell 脚本,我想执行一个 SQL Server 存储过程。存储过程有一个名为@backupType 的参数,它属于CHAR(1) 类型。我这样称呼它:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=(local);Database=master;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "sp_myStoredProcedure"
$SqlCmd.Connection = $SqlConnection

$SqlCmd.Parameters.Add("@backupType", [System.Data.SqlDbType]"Char", 1)
$SqlCmd.Parameters["@backupType"].Value = "F"

$result = $SqlCmd.ExecuteNonQuery()
$SqlConnection.Close()

我得到的错误是:

使用“0”参数调用“ExecuteNonQuery”的异常:“过程或函数'sp_myStoredProcedure'需要参数'@backupType',但未提供。”在 line:14 char:1

  • $result = $SqlCmd.ExecuteNonQuery()
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    • FullyQualifiedErrorId : SqlException

我只能假设我指定了错误的参数,但是 Google 和搜索 SO 并没有发现任何有用的信息。有什么想法吗?

【问题讨论】:

  • $SqlCmd.Parameters 是哈希表/字典吗?
  • 代码在我看来没问题,这是您的实际代码吗?
  • @TheIncorrigible1 我不这么认为。我希望它是强类型参数的集合,但我不能 100% 确定。
  • @DavidG 我删除了另外两个参数,它们都是字符串参数,并且在 SP 的早期出现。由于错误指定了 char 参数,我认为问题出在我的语法上,但也许错误具有误导性?我已经三次检查错别字等。

标签: sql-server powershell stored-procedures


【解决方案1】:

试试

$SqlCmd.CommandType = [System.Data.CommandType]::StoredProcedure
$SqlCmd.Parameters.Add("@backupType", [System.Data.SqlDbType]::Char, 1).Value="F"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2011-09-18
    • 1970-01-01
    • 2015-01-07
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多