Unknown parameter datatype UNKNOW send from server.

Posted kinglandsoft

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unknown parameter datatype UNKNOW send from server.相关的知识,希望对你有一定的参考价值。

技术分享图片

procedure Tmainform.Button7Click(Sender: TObject);
begin

  kbmMWClientQuery3.Query.Text:=insert into t1 (fid,fname,fint,fint64) values (:id,:name,:int,:int64);

  //kbmMWClientQuery3.Params.ParamByName(‘id‘).DataType:=ftString;
  //kbmMWClientQuery3.ParamByName[‘id‘].DataType:=ftString;
  //kbmMWClientQuery3.ParamByName[‘id‘].Size:=200;

  kbmMWClientQuery3.ParamByName[id].Value:=2000;
  kbmMWClientQuery3.ParamByName[name].Value:=2000;
  kbmMWClientQuery3.ParamByName[int].Value:=1;
  //kbmMWClientQuery3.ParamByName[‘int64‘].Value:=11111111;
  kbmmwclientQuery3.Execute;

end;

看上面的代码,利用ClientQuery执行一条Insert语句,向数据库插入一条记录。如果不为int64参数赋值,则在执行Execute时,产生异常:Unknown parameter datatype (UNKNOW) send from server,同时,记录也插入到数据库中了。如果换用Resolve提交数据,则不会产生异常。

通过跟踪分析Execute方法,原来,正如这个异常信息所示,就是执行SQL时,从应用服务器返回了UNKNOW参数类型,即未知参数类型,而在客户端的PerformExecute方法中,当向服务端发出请求并接收返回结果后,客户端要根据服务端返回的结果,重建客户端ClientQuery的参数及值,当发现有UNKONW参数时,会提出这个异常。

为避免这种情况,有两种方法:一是换用Resolve可以解决;二是保证为所有的参数赋值。

我试着注释掉PerformExecute中下面两行代码:

             if ftype=ftUnknown then
                kbmMWRaiseException(KBMMW_ERR_CLIENT_DATASTORE_RESPONSE_UNKNOWNPARAMDATATYPE,Unknown parameter datatype+fstype+) send from server.);

不再提升异常,也能重建ClientQuery的参数及其值。

 

 

 

 

 

技术分享图片

以上是关于Unknown parameter datatype UNKNOW send from server.的主要内容,如果未能解决你的问题,请参考以下文章

Redis 报错:Invalid argument during startup: unknown conf file parameter

DataTables warning: table id=DataTables_Table_0 - Requested unknown paramete

DataTables warning: TABLE id=DataTables_Table_0 - Requested UNKNOWN parameter '7' FOR ROW 0(

Unable to interpret the implicit parameter configuration with dataType

oracle自定义函数

Unable to interpret the implicit parameter configuration with dataType: , dataTypeClass: class java.