ibm-midrange - 使用 SQL 添加列后如何更新逻辑文件定义

标签 ibm-midrange db2-400

我使用 SQL ALTER TABLE 语句向 DB2/400 v6r1 中的表(物理文件)添加了新列。我有一个基于该表的逻辑文件,并且新字段没有出现在其中。有没有办法更新该逻辑文件而不删除并重新创建它?

最佳答案

没有。

您将需要重新编译逻辑。

如果该字段被添加到记录的末尾,您可能可以通过关闭其级别检查来逃脱,LVLCHK(*NO)。如果某些程序仅将其用于输入并且不需要新字段,这可能会让您不必重新编译它们。这个选择让许多从业者感到相当紧张,其他人则认为这很好。小心使用。仅通过 SQL 访问文件的程序可能会被豁免。所有其他使用 native I/O 的逻辑或物理的程序都必须重新编译。

在程序中仅使用 SQL 的一个好处是需要更少的重新编译。

编辑

需要明确的是 -

您需要重新编译引用已更改物理的所有逻辑。

您需要重新编译任何使用 native I/O 来写入或更新物理或任何逻辑中的记录的程序。

许多(可能是大多数)会告诉您还要重新编译仅读取文件(PF 或 LF)的程序。

有些人会告诉您,如果您仅将新字段添加到记录格式的末尾,那么您可能不需要重新编译仅使用 native I/O 来读取文件的程序。如果这样做,您将需要 a) 仅在调用这些程序时使用 OVRDBF LVLCHK(*NO),然后使用 DLTOVR,或者 b) 创建或更改文件以具有 LVLCHK(*NO)。

两者都有风险。警告:这些特技是由专业人士表演的。不要在家尝试。

换句话说,如果您的商店没有足够的经验来仔细、彻底地理解和妥善处理问题,那么就谨慎行事吧。确实。如果您不得不问这个问题,那么您还没有达到目的。

如果您在记录布局的开头或中间添加了新字段,或者更改了任何现有字段的大小或类型,请不要通过 GO!您将需要重新编译所有使用该文件的程序。

关于ibm-midrange - 使用 SQL 添加列后如何更新逻辑文件定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575858/

相关文章:

java - 将散列或加密密码发送到 AS400 jdbc 连接

java - 使用 FTPS 将文件从 AS400 调度到大型机

Java SQLException SQL0901 和 AS400 MCH1210 错误

SQL 查找为什么 PK canidate 在未加密的表上有重复项

c - 如何通过 C API as400 锁定 DATAAARA

javascript - 火狐浏览器 JavaScript 兼容性

c# - 无法使用 Entity Framework 开始分布式事务

sql - 如何消除 DB2400 或任何 SQL 中 JSON_ARRAYAGG 中的重复行?

ibm-midrange - 使用 qsys2.qcmdexc 但切换用户

C# ADO.NET IBM DB2 命名参数具有相同的名称抛出没有足够的参数指定异常