我要向你解释我的问题。 我必须将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 doc和论坛之后,我写下了这个:
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)&#39;使用参数函数中的值。