Oracle:批量调用多个过程

时间:2009-05-28 21:50:50

标签: oracle plsql odp.net

我需要在事务中连续调用Oracle包中的许多不同过程。事实上,我需要打电话约5000次。我想知道我可以使用什么语法来批量调用Oracle,所以我只需要一次往返。我试过了

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

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

任何指针?我知道将参数数组传递给过程,但不幸的是,在这种情况下这无济于事。

2 个答案:

答案 0 :(得分:2)

最简单的是一个匿名的PL / SQL块。 EG:

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;
/

然后你可以进行额外的步骤并实际创建它作为DB中的过程,并简单地调用该过程。 PS。最后的斜杠告诉SQL * Plus或SQL Developer执行代码。这取决于您使用什么来运行SQL。

答案 1 :(得分:0)

每次通话都要进行网络往返?听起来像死亡表演。可能最好重写存储过程,以便减少网络流量。