【发布时间】:2017-03-05 20:00:32
【问题描述】:
我想用 powershell 写一个 oracle 表。我写了以下代码。
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient")
$connectionString = "User Id=XXX;Password=XXX;Data Source=YYY;"
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
$app_id="SP_ERROR_ALERT"
$cat="CAT151"
$stat="I"
$phoneno="0123456789"
$body="Hard drive free space running low - SP"
$outid="SLIC%20LIFE"
$desc="Free space"
$connection.Open()
$queryString = "insert into DB.TABLE (APPLICATION_ID, JOB_CATEGORY, SMS_TYPE, MOBILE_NUMBER, TEXT_MESSAGE, SHORT_CODE, JOB_OTHER_INFO) VALUES (:one, :two, :three, :four, :five, :six, :seven) "
$command.Parameters.Add("one", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["one"].Value = $app_id
$command.Parameters.Add("two", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["two"].Value = $cat
$command.Parameters.Add("three", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["three"].Value = $stat
$command.Parameters.Add("four", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["four"].Value = $phoneno
$command.Parameters.Add("five", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["five"].Value = $body
$command.Parameters.Add("six", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["six"].Value = $outid
$command.Parameters.Add("seven", [System.Data.OracleClient.OracleType]::VarChar)
$command.Parameters["seven"].Value = $desc
$command = New-Object System.Data.OracleClient.OracleCommand
$command.Connection = $connection
$command.CommandType = [System.Data.CommandType]::Text
$command.CommandText = $queryString
$command.ExecuteNonQuery()
$connection.Close()
当我执行脚本时,我收到一条错误消息“异常调用“ExecuteNonQuery”,参数为“0”:“ORA-01008:并非所有变量都绑定”。我在这里做错了什么。
提前致谢
【问题讨论】:
-
我想你会在这个帖子中找到答案:stackoverflow.com/questions/11048910/…
-
这是 c#。不是吗。
-
基本上是.Net Framework。你应该看看如何添加参数:
Parameters.Add(new OracleParameter("variableName", theValue)); -
我像以前在 .NET 中一样添加了参数 $pone=New-Object System.Data.OracleClient.OracleParameter $pone.ParameterName = "one" $pone.Value = $app_id $command .Parameters.Add($pone) 还是没有运气
-
$command = New-Object System.Data.OracleClient.OracleCommand放错地方了。放在queryString之后。
标签: oracle powershell