gpt4 book ai didi

mysql - 使用 Powershell 中的参数执行 sql 过程

转载 作者:可可西里 更新时间:2023-11-01 08:27:19 27 4
gpt4 key购买 nike

我是 Powershell 的新手,所以我对如何调用带参数的 SQL 过程有点困惑。我已成功打开与我的数据库的连接,并且我已设法获得一个不使用参数的过程,因此我知道连接正常。

添加参数和运行查询的代码如下:

$dateToUse = Get-Date -f yyyy/MM/dd
$MysqlQuery.CommandText = "GetJourneyByDepartureDate"
$MysqlQuery.Parameters.AddWithValue("_departureDate", $dateToUse)
$queryOutput = $MysqlQuery.ExecuteReader()

每当我尝试运行我的脚本时,我都会收到一条错误消息

Incorrect number of arguments for PROCEDURE dbo.GetJourneyByDepartureDate; expected 1, got 0

我环顾四周试图找到解决方案,但我对 Powershell 的了解还不够,不知道哪些解决方案可能是正确的。

此外,我无法发布 SQL 查询,但我通过在 HeidiSQL 中手动运行查询并手动传递参数,成功地运行了该过程很多次

编辑:

我现在稍微修改了我的代码,现在看起来像这样:

$MysqlQuery.CommandText = "GetJourneyByDepartureDate"
$MysqlQuery.Parameters.Add("@_departureDate", [System.Data.SqlDbType]::Date) | out-Null
$MysqlQuery.Parameters['@_departureDate'].Value = $dateToUse
$parameterValue = $MysqlQuery.Parameters['@_departureDate'].value

Write-Host -ForegroundColor Cyan -Object "$parameterValue";
$queryOutput = $MysqlQuery.ExecuteReader()

我在 Write-Host 行的控制台上得到 $dateToUse 值输出,但我仍然得到与以前相同的参数错误数量错误。 SP声明如下:

CREATE PROCEDURE `GetJourneyByDepartureDate`(IN `_departureDate` DATE) READS SQL DATA

最佳答案

最后我发现我需要将 CommandType 设置为 StoredProcedure 并且我还需要添加参数但是我错过了方向并且我显然必须在'@'之后添加一个空格但我不是确定为什么。我的解决方案如下:

    $MysqlCommand = New-Object MySql.Data.MySqlClient.MySqlCommand.Connection = $connMySQL               #Create SQL command
$MysqlCommand.CommandType = [System.Data.CommandType]::StoredProcedure; #Set the command to be a stored procedure

$MysqlCommand.CommandText = "GetJourneyByDepartureDate"; #Set the name of the Stored Procedure to use
$MysqlCommand.Parameters.Add("@ _departureDate", [System.Data.SqlDbType]::Date) | out-Null; #Set the input and output parameters
$MysqlCommand.Parameters['@ _departureDate'].Direction = [system.data.ParameterDirection]::Input; #Set the _departureDate parameter to be an input parameter
$MysqlCommand.Parameters['@ _departureDate'].Value = $dateToUse; #Set the _departureDate parameter value to be dateToUse

关于mysql - 使用 Powershell 中的参数执行 sql 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com