全局临时表和批量收集

时间:2015-09-23 09:08:19

标签: tsql plsql bulk-collect

我要向你解释我的问题。 我必须将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;使用参数函数中的值。

0 个答案:

没有答案