我正在使用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,它不会改变任何东西,有没有人有其他想法?
答案 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