Oracle 삽입을위한 매개 변수의 해시 테이블을 전달 중입니다. 해시 테이블 값의 내용은 배열입니다. 계속이 오류가 발생합니다.오류를 해결하는 방법 : 예외 설정 "값": "값이 예상 범위 내에 들지 않습니다." in powershell script
Exception setting "Value": "Value does not fall within the expected range."
배열 바인딩을 사용하여 값을 추가하려고 할 때. 유효한 명령 개체가 있고 ArrayBindCount를 올바른 값으로 설정합니다. 여기 내가 사용하고있는 코드와 출력. 이 작동합니다!
Value of $cmdObject.CommandText = insert into regions (region_id, region_name) values (:REGION_ID, :REGION_NAME)
ParameterName = "REGION_NAME" type = System.String Parameter Value Type = System.String[] Count = 4
Exception setting "Value": "Value does not fall within the expected range."
At C:\Users\areum\Downloads\wd\Scratch\HelloPSWorld_functions.ps1:1615 char:4
+ $oraParam.Value = $p.Value
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
ParameterName = "REGION_ID" type = System.String Parameter Value Type = System.Int32[] Count = 4
Exception setting "Value": "Value does not fall within the expected range."
At C:\Users\areum\Downloads\wd\Scratch\HelloPSWorld_functions.ps1:1615 char:4
+ $oraParam.Value = $p.Value
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
Number of parameters in $cmdObject.Parameters = 2
Value of $cmdObject.ArrayBindCount = 4
난 그냥이 동작하지 않습니다 :
$cmdObject = New-Object Oracle.DataAccess.Client.OracleCommand($sqlStatement,$connectionObject)
$cmdObject.BindByName = $true
if($parameterValues)
{
ForEach($p in $parameterValues.GetEnumerator())
{
$cmdObject.ArrayBindCount = $p.Value.Count
Write-Host ("ParameterName = ""{0}"" type = {1} Parameter Value Type = {2} Count = {3}" -f $p.Key, $p.Key.GetType().FullName, $p.Value.GetType().FullName, $p.Value.Count)
$oraParam = New-Object Oracle.DataAccess.Client.OracleParameter
$oraParam.ParameterName = $p.Key
$oraParam.Value = $p.Value
$cmdObject.Parameters.Add($oraParam) | Out-Null
}
Write-Host("Number of parameters in `$cmdObject.Parameters = {0}" -f $cmdObject.Parameters.Count)
Write-Host ("Value of `$cmdObject.ArrayBindCount = {0}" -f $cmdObject.ArrayBindCount)
여기에 내가 무엇입니까 출력과 오류는 다음 $ parameterValues 변수 내가 전달하고 내 해시 테이블이 포함되어 있습니다! 도와주세요!
의견을 보내 주셔서 감사합니다. 나는이 제안을 시도하고 그것이 효과가 있는지 확인합니다. 제 질문에 답할 시간을 내 주셔서 감사합니다. 귀하의 제안을 테스트 한 후에 나는 더 많은 피드백을 게시 할 것입니다. – user2687667