1

我要向你解释我的问题。我必须将 t-sql 脚本转换为 pl/sql 脚本。t-sql 中有我的代码:

CREATE TABLE #temp_tb ( temp_row nvarchar(max)) 
if @@error <> 0 goto lbl_end

DECLARE @bulk_cmd varchar(1000)
set @bulk_cmd = 'BULK INSERT #temp_tb FROM ''c:\Communication\Test\MSG_IN\'+'$(nomfic)'+''' WITH 
( 
CODEPAGE = ''RAW'',
ROWTERMINATOR = '''+CHAR(10)+''',
DATAFILETYPE = ''WIDECHAR'' 
)'

exec (@bulk_cmd)
if @@error <> 0 goto lbl_end

经过大量的 oracle 文档和论坛,我写了这个:

CREATE GLOBAL TEMPORARY TABLE temp_tb ( temp_row NCHAR(MAX)) ON COMMIT DELETE ROWS;
BEGIN
EXCEPTION
    WHEN OTHERS THEN GOTO lbl_end;
END;                               

DECLARE bulk_cmd varchar2(1000);

bulk_cmd := 'BULK INSERT temp_tb FROM ''c:\Communication\Test\MSG_IN\'+'$(nomfic)'+''' WITH 
( 
CODEPAGE = ''RAW'',
ROWTERMINATOR = '''+CHAR(10)+''',
DATAFILETYPE = ''WIDECHAR'' 
)';

BEGIN
  exec (bulk_cmd);
EXCEPTION
    WHEN OTHERS THEN GOTO lbl_end;
END;

但是,我这里有一个错误NCHAR(MAX)。我必须输入一个像 100000 这样的大值?如果我放这个,他会在EXECEPTION语法错误后给我一个错误...

另一方面,如果有人能告诉我如何调整我的批量收集...我没有找到任何关于批量收集到像我这样的集成文件的文档...

我希望我很清楚,因为我真的很难解释......我是Oracle(PL / SQL)的初学者......

再次感谢大家的帮助

编辑:我通过 .bat 启动此脚本。我拿了参数,用参数函数中的值填充了“$(nomfic)”。

4

0 回答 0