DB2 -所有SQL语句都只返回字符串,并且总是导致以下错误:VARIABLE定义与关联的列类型不匹配

iszxjhcz  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(151)

正如标题所说,每次我试图创建int或decimal字段pic子句时,我发现了这个语法错误。我检查了DB2中的表,只有2个字段是Char字段。其他字段都是数字。奇怪的是,我可以用PIC子句的适当长度定义字符串版本,并且它接受它。我只是想知道为什么不能使用Int/当我的数据库清楚地存储它们时,它们是Dec值。提前感谢。
下面是我的DB2表结构的一个图像。Table structure
这表明我检索的值显然是int/decimal等。在我的应用程序中,它不知何故认为不是这样。ProdPrice应该工作,但它没有。它的列匹配我的表,但只有当我使它成为PIC X(10)时才会没有错误。有什么解决办法吗?

01 PRODID   PIC  X(10) .
01 SUPPID   PIC  X(10) .
01 PRODNAME.
       49 NAME-LENG PIC S9(4) COMP-4.
       49 NAME-VAL PIC X(30).
01 PRODPRICE    PIC S9(8)V9(2).
01 PRODDESC.
       49 DESC-LENG PIC S9(4) COMP-4.
       49 DESC-VAL PIC X(200).

这是我的SQL。

EXEC SQL
            SELECT PROD_NAME, PROD_DESCRIPTION, PROD_PRICE, 
            SUPP_ID
            INTO :PRODNAME, :PRODDESC, :PRODPRICE, :SUPPID
            FROM  PRODUCT
            WHERE PROD_ID = :PRODID
END-EXEC.
xzv2uavs

xzv2uavs1#

这是对我有效的解决方案。
我只是将COMP-4更改为COMP-3。如果仍然存在问题,请确保在数值字段PIC子句中定义了“S”。

Example:
01 SUPPID       PIC  S9(6) COMP-3.          *int
01 PRODPRICE    PIC  S9(8)V9(2) COMP-3.     *decimal
01 CLIENTID     PIC  X(5).                  *string

相关问题