2

I added a new column to a table (physical file) in DB2/400 v6r1 using an SQL ALTER TABLE statement. I have a logical file based on that table and the new field doesn't appear in it. Is there a way update that logical file without deleting and recreating it?

4

2 回答 2

3

不。

您将需要重新编译逻辑。

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

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

编辑

要清楚 -

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

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

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

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

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

换句话说,如果您的商店没有足够的经验来理解和妥善处理问题,那么请谨慎行事。确实。如果你不得不问这个问题,那么你还没有接近那里。

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

于 2013-07-11T00:10:17.687 回答
1

重新编译 LF(假设它是使用 DDS 创建的)或执行 ALTER VIEW 以在 SQL 中更新它。

于 2013-07-10T18:35:31.930 回答