postgresql 使用InstantSQL RMCobol更新Postgres

mw3dktmi  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(142)

我需要使用来自同一个表的字段和cobol字段更新Postgres中的列

update mytable
    set col1 = (col2 * ?) + (col3 * ?) + (col4 * ?);

字符串
这里是cobol字段。col 2、3和4是整数,col 1是十进制(5,2)。
我已经绑定了cobol参数如下:

*bind parameters
        SQL BIND PARAMETER sql-QueryHandle
          1 sql-Numeric sql-Param-Input WS-fld1 OMITTED
          2 sql-Numeric sql-Param-Input WS-fld2 OMITTED
          3 sql-Numeric sql-Param-Input WS-fld3 OMITTED.


Cobol字段值为

1. field 1 = 020.00
2. field 2 = 030.00
3. field 3 = 040.00


该程序运行没有错误,但结果显示为0的col 1的所有时间。
但是在同一个SQL中,如果我直接使用下面的cobol值,那么col 1就有正确的值:

update mytable
    set col1 = (col2 * 020.00) + (col3 * 030.00) + (col4 * 040.00);


我已经尝试过使用sql-Numeric和sql-Declare进行绑定,但输出没有区别。

nuypyhwy

nuypyhwy1#

请确保Cobol字段和PostgreSQL列在精度/小数位数和数据类型方面匹配。对于整数列,请使用sql-decimal,对于小数列,请使用sql-Decimal。在执行SQL查询之前,请检查WS-fld 1、WS-fld 2和WS-fld 3的值是否有效。如果col 1是小数,请使用sql-Decimal作为输出参数。尝试以下操作:

*bind parameters
SQL BIND PARAMETER sql-QueryHandle
  1 sql-Integer sql-Param-Input WS-fld1 OMITTED
  2 sql-Integer sql-Param-Input WS-fld2 OMITTED
  3 sql-Integer sql-Param-Input WS-fld3 OMITTED
  4 sql-Decimal sql-Param-Output WS-Col1 OMITTED.

字符串

相关问题