SQLPlus删除插入时clob字段中的尾随空格

时间:2009-10-14 11:51:43

标签: sql oracle insert sqlplus

我正在使用SQL Plus 11.1.0.6.0运行一个脚本,该脚本执行批量插入Oracle 10g数据库。 我注意到的问题是将一些代码字符串插入clob字段时,该字段包含一些带有尾随空格的行,例如:

....public void myMethod().... --trailing space here
....{
........int myVar = 1;
........ -- empty line with trailing spaces
........myVar+=1
....}

插入表中的字符串将丢失空行中的空尾随空格,并变为:

....public void myMethod() --trailing space is lost
....{
........int myVar = 1;
-- empty line without trailing spaces
........myVar+=1
....}

虽然它对有用数据没有任何影响,但这非常令人沮丧,因为它导致数据与原始数据不同并且无法进行某些测试。

所有我能找到的是SET TRIMSPOOL / TRIMOUT OFF,它不会改变任何东西,有没有人有其他想法?

3 个答案:

答案 0 :(得分:0)

如果不发布您的脚本,很难确定,但您可能不应该直接在SQL Plus中的CLOB中插入文本字符串。如果您要使用从文件中提取文本并从SQL Plus调用PL / SQL的PL / SQL过程,则应保留所有格式。

但那可能是一个全能的PITA。但它在O'Reilly PL / SQL文本中有详细记载。

答案 1 :(得分:0)

最后我通过这样的黑客解决了它(考虑原始示例):

declare
myLargeValue_2 clob;
begin
myLargeValue_2 := '....public void myMethod()'||'....
'||'....{
........int myVar = 1;
'||'........' -- empty line with trailing spaces

and so on

基本上连接显式所有空格

答案 2 :(得分:0)

您可以尝试启用以下参数:

SET SQLBLANKLINES ON