1

我需要在事务中连续调用 Oracle 包中的多个不同过程。事实上,我需要调用他们大约 5000 次。我想知道我可以使用什么语法来批处理这些对 Oracle 的调用,所以我只需要一次往返。我试过了

PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5;

但我回来了 ORA00900:无效的 SQL 语句。

任何指针?我知道将参数数组传递给过程,但不幸的是,在这种情况下这并没有多大帮助。

4

2 回答 2

2

最简单的是匿名 PL/SQL 块。例如:

DECLARE
  v_file_loc varchar2(100) := '....';
  v_file_name varchar2(100) := '....';
  v_text varchar2(4000);
BEGIN
    dbms_output.put_line('Starting file read');
    fp := UTL_FILE.FOPEN(v_file_loc,v_file_name,'r');
    LOOP
        utl_file.GET_LINE(fp,v_text);
        dbms_output.put_line(v_text);
    END LOOP;
    UTL_FILE.FCLOSE(fp);
END;
/

然后,您可以进行额外的步骤,将其实际创建为数据库中的过程,然后简单地调用该过程。PS。末尾的斜线告诉 SQL*Plus 或 SQL Developer 执行代码。这取决于您使用什么来运行 SQL。

于 2009-05-28T22:43:58.617 回答
0

并为每个呼叫产生一次网络往返?听起来就像是性能的死亡。重写存储过程可能会更好,这样您就可以减少网络流量。

于 2009-05-28T21:54:54.753 回答