1

我有一个多层项目,在该项目中,我将通过带有函数的 FDStoredProc 从 microsoft sql 2005 收集数据,并且该函数会将数据集返回给客户端。当服务器将数据集分配给函数的结果并且函数尝试将其发送给客户端时,我收到此错误。项目 etctec.exe 引发异常类 TDBXError,并带有消息“TDBXTypes.BLOB 值类型无法作为 TDBXTypes.Bytes 值类型访问”。

在另一个项目中,我以完全相同的方式将不同数据库的 StoredProc 与 TFDStoredProc 一起使用,并且工作正常。有什么想法会引发这个错误吗?

这就是我在服务器中所做的。

function TServerMethods1.getCategories(): TDataSet;
begin
  FDStoredProc1.ParamByName('@val1').AsInteger:= 1;
  FDStoredProc1.ParamByName('@val2').AsInteger:= 0;
  FDStoredProc1.ParamByName('@val3').AsInteger:= 1;
  FDStoredProc1.ParamByName('@val4').AsInteger:= 1;
  FDStoredProc1.Open();
  result:= FDStoredProc1;
end;

客户这样称呼它...

dataset:=ClientModule1.ServerMethods1Client.getCategories();

问题来自一些 NVARCHAR(max) 类型的字段,有人知道在不更改字段类型的情况下解决此错误的方法吗?

我尝试将数据集的字段类型更改为字符串或没有成功的东西。我唯一能暂时做的就是分别获取这些字段,将它们放在字符串列表或类似的东西中,然后将其传递给客户端。

4

1 回答 1

-1

我认为您应该使用以下一些类似的方法:http: //docwiki.embarcadero.com/Libraries/XE4/en/Data.DB.TDataSet.CreateBlobStream http://docwiki.embarcadero.com/Libraries/XE4/en/ Data.DB.TDataSet.GetBlobFieldData

您应该将您的字段定义为 blob 字段,然后使用链接中描述的功能将数据输入/输出。

这也是如何复制数据的示例:http: //docwiki.embarcadero.com/Libraries/XE4/en/Data.DB.TDataSet.CreateBlobStream

于 2014-04-15T13:25:00.960 回答