获取存储过程的 OUT BLOB 类型参数作为 TStream



我的 MySQL 数据库上有一个存储过程,其中包含 2 个 OUT 参数作为 Blob 类型

我想使用 UniDAC 的 SP 组件将它们的值作为 TStream,我已经尝试了以下代码进行测试:

 SP := TUniStoredProc.Create(nil);
 M := TMemoryStream.Create;
 try      
  try
   SP.StoredProcName := 'user_getpic';
   SP.PrepareSQL(False);
   SP.Params.ParamByName('fUID').AsString := '...';
   SP.Params.ParamByName('fDiceCode').AsString := '...';
   ...
   SP.ExecProc;
   M.LoadFromStream(SP.Params.ParamByName('fUPic').AsStream);
  except
   on E:EXception do
    begin
     ShowMessage('Error : ' + E.Message);
    end;
  end;
 finally
  SP.Free;
  M.Free;
 end;

问题是 Param.AsStream 返回 Nil,但 Param.AsBlob 不是 Nil

当我直接在MySQL上调用此SP时,fUPic具有blob数据,并且在SP上没有问题

我试过SP。CreateBlobStream() 但是我应该传递给它的第一个参数作为 TField ?!

我尝试过从 Param.AsBlob 投射到 TBlobStream,但没有机会!

我想知道如何获取 OUT blob 参数作为 TStream ?

我正在使用Delphi XE6和UniDAC 6.1.4

使用 AsBlob .它将 blob 作为字节数组返回。您可以直接使用它,或者如果您需要通过流访问数据,请使用 TBytesStream .

Stream := TBytesStream.Create(Param.AsBlob);

相关内容

  • 没有找到相关文章

最新更新