【发布时间】:2016-02-20 11:40:05
【问题描述】:
我们使用的是 MSSQL 2012。
尝试使用存储过程更新客户端照片
spui_SetClientPhoto
int ClientID
VarBinary(Max) Photo
使用纯 ADO 程序运行良好:
ADO.ProcedureName:='spui_SetClientPhoto';
ADO.Parameters.CreateParameter('@ClientsID',ftInteger,pdInput,0,95075);
ADO.Parameters.CreateParameter('@Photo',ftBlob,pdInput,0,NULL);
ADO.Parameters[1].LoadFromFile('C:\Photo.png',ftBlob);
ADO.ExecProc;
但是使用 CDS 会导致错误:
不允许从数据类型 Varchar(max) 到 Varbinary(max) 的隐式转换。
ADO.ProcedureName:='spui_SetClientPhoto';
cds.SetProvider(ADO);
cds.Params.CreateParam(ftInteger,'@ClientsID',ptInput).AsInteger:=95075;
cds.Params.CreateParam(ftBlob,'@Photo',ptInput).LoadFromFile('C:\Photo.png', ftBlob);
cds.Execute;
例如无法使用 BLOB 类型的参数运行 CDS。有什么解决办法吗?
【问题讨论】:
-
你能添加存储过程的 DDL 吗?看他们是否可以在没有它的情况下重现问题是毫无意义的读者。
标签: delphi blob params tclientdataset