#常见问题#【熊说EAS银企】查询余额,为何上日余额显示为0原创
金蝶云社区-福分小熊
福分小熊
5人赞赏了该文章 402次浏览 未经作者许可,禁止转载编辑于2022年12月27日 10:37:32

关键词:EAS、银企互联、查询银行账户余额


更新日志:

20221227:初稿


参考帖子:

数值类型允许为空,您了解吗?


1.问题描述

问题现象、报错信息

image.png


实际银企查询只查了当日余额

image.png


image.png



2.解决方法


金额为0为空,含义不同。如在银企互联-银行账户余额查询列表的昨日余额、可用余额要允许为空,而不能置为0,其含义不是金额是0,而是银行未提供此数据。



实际业务场景中,为空往往指未发生业务,为0指发生了金额、数量为0的业务



2.1使用Oracle数据库可视化工具Navicat操作为例

具体操作内容如下图所示:

image.png


2.2使用SQL脚本修改

Oracle数据库

SELECT DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='T_BE_ACCOUNTBANKBALANCE' AND COLUMN_NAME = 'FLSTBALANCE'

image.png


alter table T_BE_ACCOUNTBANKBALANCE  alter Column FLSTBalance NUMERIC(19,4) DEFAULT NULL;




SQL SERVER数据库


查询字段默认值,执行方言

SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value" FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id WHERE SO.xtype = 'U' and so.name='T_BE_ACCOUNTBANKBALANCE' ORDER BY SO.[name], SC.colid

image.png


Image_20221216153552.png

image.png



2.3历史数据调整

对于已经录入空值的数据,此时因为关闭了允许为空,虽然数据库保存的是空值,但页面展示的是0。既然都不允许为空了,最好把数据库表中的空值改为0,这个时候需要使用到SQL脚本,下面以Oracle数据库操作为例:


语法:UPDATE <表名> SET <列名>  = 0  WHERE  <列名>  IS NULL;


示例

UPDATE T_TESTNULL SET FINTEGERFIELD = 0 WHERE FINTEGERFIELD IS NULL;


必要的情况下,字段设置成不允许为空

ALTER TABLE T_TESTNULL MODIFY FINTEGERFIELD NOT NULL;



3.效果

image.png

赞 5