为什么我得到“数据转换或数据映射错误。 SQLCODE = -802“在一个简单的DB2 select语句上? [英] Why am I getting "Data conversion or data mapping error. SQLCODE=-802" on a simple DB2 select statement?

查看:2743
本文介绍了为什么我得到“数据转换或数据映射错误。 SQLCODE = -802“在一个简单的DB2 select语句上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用PHP访问IBM i(AS400)上的DB2信息。



使用以下代码:

  $ query =SELECT * FROM QS36F.MYTABLE WHERE MYFIELD = 120006; 
$ result = db2_prepare($ conn,$ query);
db2_execute($ result);

$ i = 0;
while($ row = db2_fetch_assoc($ result)or die(db2_stmt_errormsg())){
$ i ++;
打印行。 $ i。 成功< br />;
}

我得到:



< blockquote>

SELECT * FROM QS36F.MYTABLE WHERE MYFIELD = 120006



第1行成功

第2行成功/>
第3行成功

第4行成功

数据转换或数据映射错误。 SQLCODE = -802


应该有超过4个结果。
为什么会出现此错误?



更多详细信息:




  • 同样的错误似乎发生在MYFIELD搜索的任何值上,尽管它可能是在不同数量的成功结果之后。

  • MYFIELD是NUMERIC(7,0)

  • 我可以搜索表中的其他字段(包括数字),并且可以正常工作。


解决方案

表中有无效的十进制数据。有空白而不是零。我将零移动到这些空白处,并修复了问题


I am accessing DB2 information on an IBM i (AS400) with PHP.

With this code:

$query = "SELECT * FROM QS36F.MYTABLE WHERE MYFIELD=120006";
$result = db2_prepare($conn, $query);
db2_execute($result);

$i=0;
while($row = db2_fetch_assoc($result) or die(db2_stmt_errormsg())){
    $i++;
    print "Row " . $i . " successful<br />";
}

I get:

SELECT * FROM QS36F.MYTABLE WHERE MYFIELD=120006

Row 1 successful
Row 2 successful
Row 3 successful
Row 4 successful
Data conversion or data mapping error. SQLCODE=-802

There should be more than 4 results. Why might this error be occurring?

More details:

  • This same error seems to happen on any value I search for in MYFIELD although it may be after a different number of successful results
  • MYFIELD is NUMERIC(7,0)
  • I can search other fields in the table(including numeric ones) and it works fine.

解决方案

There was invalid decimal data in the table. There were blanks instead of zeros. I moved zeros into those blanks and that fixed the problem

这篇关于为什么我得到“数据转换或数据映射错误。 SQLCODE = -802“在一个简单的DB2 select语句上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆