我有这个 RPG 代码,我一直在尝试将其转换为 Java,但我仍然不明白它在 Java 中会是什么样子。
RPG代码:
C EVAL %NULLIND(XXXXXXXX) = *OFF Birthday
C MOVEL *BLANK XXXXXXXX Birthday
C EVAL %NULLIND(XXXXXXXX) = *ON Birthday
理解:
XXXXXXXX
的 NULL 指示符设置为 *OFF
,以便我们可以更改 XXXXXXXX
XXXXXXXX
的值设置为空白XXXXXXXX
的值设置为空我的理解正确吗?
您的理解是正确的。
但是请注意,我将其称为针对下游流程的黑客工作,该流程无法正确处理空值。
除了在字符字段中存储数值之外。
基本上,某个地方没有检查 NULL,而是开发人员决定确保该字段除了打开 NULL 指示器之外还包含空白。
我认为 RPG 的 %NULLIND 与 SQL 的“可空”概念比与 Java 的空对象概念更相关。
我对使用Java访问数据库不是很熟悉,但我认为如果Java代码使用ResultSet,那么它会使用updateNull()将列设置为null,并使用wasNull()检查列是否为null。
ResultSet 文档位于:https://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html
我通过此 IBM 文档页面中的 java.sql.package 链接找到了该文档:: https://www.ibm.com/docs/en/i/7.5?topic=preparedstatements-creating-using。