使用数组实现oralce批量数据提交

来源:互联网 发布:c919 知乎 编辑:程序博客网 时间:2024/06/06 02:56

 数组及对象定义如下:

create or replace type t_test as object (value number(9));

create or replace type t_testarr as table of  t_test;

存储过程:

procedure pro_test(testval in t_testarr )

PL/SQL develop下:

declare
  valt_testarr;
begin
  val:=t_testarr(t_test (10),t_test (11),t_test (12),t_test(13));
  execute immediate 'call pro_test (:val)'using val;
  commit;
end;

delphi下使用odac控件:

  with OraQuery1 do
  begin
    close;
    sql.Clear;
    sql.Add('begin');
    sql.Add('pro_test(1,:testval);');
    sql.Add('end;');
    with OraQuery1.ParamByName('testval').AsArray do
    begin
       ObjectType:=TOraType.Create(OraSession1.OCISvcCtx,'t_testarr);
       ItemAsObject[1].AttrAsInteger['value ']:=10;
       ItemAsObject[2].AttrAsInteger['value ']:=11;
       ItemAsObject[3].AttrAsInteger['value ']:=12;
       ItemAsObject[4].AttrAsInteger['value ']:=13;
    end;
    ExecSQL;
    close;
    sql.Clear;
  end;

原创粉丝点击