关键词:EAS、银企互联、查询银行账户余额
更新日志:
20221227:初稿
参考帖子:
1.问题描述
问题现象、报错信息
实际银企查询只查了当日余额
2.解决方法
金额为0与为空,含义不同。如在银企互联-银行账户余额查询列表的昨日余额、可用余额要允许为空,而不能置为0,其含义不是金额是0,而是银行未提供此数据。
实际业务场景中,为空往往指未发生业务,为0指发生了金额、数量为0的业务。
2.1使用Oracle数据库可视化工具Navicat操作为例
具体操作内容如下图所示:
2.2使用SQL脚本修改
Oracle数据库
SELECT DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='T_BE_ACCOUNTBANKBALANCE' AND COLUMN_NAME = 'FLSTBALANCE'
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
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.效果
推荐阅读