2017-03-17 11 views
0

ODP.NET 및 Oracle 데이터베이스를 사용 중입니다. CLOB 필드 데이터를 4000 길이 이상으로 저장해야합니다. 간단한 SQL 문과 ExecuteNonQuery 예외를 통해이 작업을 수행 할 때 - PLS-00172 : 문자열 리터럴이 너무 깁니다. 질문은이 lond 데이터를 저장하는 방법입니까? 절차를 사용하거나 만들 수 없으므로 권한을 얻을 수 없습니다. ODP.NET 만 사용할 수 있습니다.ODP.NET을 통해 CLOB에 삽입

+0

이 경우 사용자가 기능을 만들 수 없으면 DBA에게 해결책을 요청하십시오. –

+0

코드를 알려주십시오. –

답변

0
Function OracleInsert($query, $connectionString){ 
$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString) 
$connection.open() 
$command=$connection.CreateCommand() 
$command.CommandText=$query + " returning Id into :newrowId" 
$param = New-Object Oracle.ManagedDataAccess.Client.OracleParameter("newrowId",[Oracle.ManagedDataAccess.Client.OracleDbType]::Decimal,[System.Data.ParameterDirection]::ReturnValue) 
$command.Parameters.Add($param) 
$reader=$command.ExecuteNonQuery() 
$connection.Close() 
return [System.Convert]::ToDecimal($command.Parameters["newrowId"].Value.Value) 

}

코드 폼 PowerShell을하지만 나던 문제. 문장을 삽입하면> 4000 오류가 발생합니다.

+0

CLOB에 대한 언급은 없습니다. '$ query'에 대한 예제가 있습니까? –

+0

'$ query'의 길이가 4000 문자보다 큰 것을 의미합니까? 이 경우 Oracle/ManagedDataAccess.Client의 제한 사항처럼 보이기 때문에 프로 시저/함수를 사용하는 것 외에는 다른 방법이 없다고 생각합니다. –