传递数组类型给ORACLE存储过程问题!!!
国风 2007-01-17 12:31:48 delphi按钮事件:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
sInmsg, sOutmsg: OleVariant;
sErrMsg: string;
i, iRes: integer;
begin
try
if not ADOConnection1.Connected then
ADOConnection1.Connected := True;
sInmsg := VarArrayCreate([1, 4000], varVariant);
for i:=1 to 4000 do
begin
sInmsg[i] := '1';
end;
ADOStoredProc1.ProcedureName := 'MYPACK.OraMyArrayTest';
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.Parameters.CreateParameter('Sinmsg',ftVariant,pdInput,4000,sInmsg);
ADOStoredProc1.Parameters.CreateParameter('Soutmsg',ftVariant,pdOutput,4000,sOutmsg);
ADOStoredProc1.Parameters.CreateParameter('SErrMsg',ftString,pdOutput,3000,'');
ADOStoredProc1.Parameters.CreateParameter('iRes',ftInteger,pdOutput,2000,0);
ADOStoredProc1.ExecProc;
iRes := ADOStoredProc1.FieldValues['iRes'];
sErrMsg := ADOStoredProc1.FieldValues['SErrMsg'];
if iRes <> 0 then
ShowMessage(sErrMsg)
else
ShowMessage(sOutmsg);
ADOConnection1.Connected := False;
except
on e: Exception do
begin
edit1.Text := e.Message;
ADOConnection1.Connected := False;
exit;
end;
end;
end;
ORACLE存储过程:
Type Myarray Is Table Of Varchar2(4000) Index By Binary_Integer;
procedure OraMyArrayTest(Sinmsg In Myarray,
Soutmsg Out Myarray,
SErrMsg Out Varchar2,
Ires Out Integer) is
begin
Ires:=-1;
Soutmsg := Sinmsg;
sErrMsg := 'OK';
Ires := 0;
end;
调试时报以下错误:
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
请高手指点.......