2017-03-17 77 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的限制。 –