2017-03-17 15 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それdoesntの問題。ステートメント> 4000を挿入するとエラーが発生します。

+0

CLOBについては何も言及していません。 '$ query'の例がありますか? –

+0

'$ query'の長さが4000文字を超えていますか?この場合、プロシージャ/ファンクションを使用する以外の方法はありません。これは、Oracle.ManagedDataAccess.Clientの制限のように見えるためです。 –

関連する問題