RO之取存储过程返回值(In、Out参数)

{
要引用的单元uRODynamicRequest, uROClasses, uRODL
}
var
  lParam:TRORequestParam;
  lArray:DataParameterArray;
  aParam:DataParameter;
begin
  with DARemoteCommand1.ExecuteCall do
  begin
    MethodName := 'ExecuteCommandEx';
    Params.Clear();
    OutgoingCommandNameParameter  := Params.Add('aCommandName', rtString, fIn).Name;
    OutgoingParametersParameter   := Params.Add('aOutgoingParameterArray', rtUserDefined, fIn, 'DataParameterArray').Name;
    IncomingParametersParameter   := Params.Add('aIncomingParameterArray', rtUserDefined, fOut, 'DataParameterArray').Name;
    IncomingAffectedRowsParameter := Params.Add('Result', rtInteger, fResult).Name;
    ParamByName(OutgoingCommandNameParameter).Value := '存储过程名';
    //上面部分,除了存储过程名要写上外,其它的都不用修改
    lArray := DataParameterArray.Create();
    aParam 	 := lArray.Add();
    aParam.Name  := '传入参数名称';
    aParam.Value := '传入参数值';
    aParam       := lArray.Add();
    aParam.Name  := '传出参数名称';
    aParam.Value := '传出参数值(不用写)';

    lParam := Params.FindParam(OutgoingParametersParameter);
    lParam.AsComplexType := lArray;
    lParam.OwnsComplexType := true;
    Execute();

    lParam := Params.FindParam(IncomingParametersParameter);
    lArray := DataParameterArray(lParam.AsComplexType);
    ShowMessage(lArray[1].Value);//lArray[0]-返回值 lArray[1]-传出参数值
  end;
end;

  

posted on 2011-07-25 14:32  stwo  阅读(416)  评论(0编辑  收藏  举报