2017-03-17 111 views
0

我正在使用ODP.NET和Oracle數據庫。我必須保存到長度超過4000的CLOB字段數據。當我通過簡單的SQL語句和ExecuteNonQuery異常發生時執行此操作 - PLS-00172:字符串文字太長。 問題是如何保存這個龐大的數據? 我無法使用/創建程序 - 無法獲得權限。我只能使用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的限制。 –