【问题标题】:Convert table into physical file AS400/DB2将表转换为物理文件 AS400/DB2
【发布时间】:2017-05-09 17:46:52
【问题描述】:

为清楚起见编辑:

我已经使用 SQL 在 DB2 中创建了一个表。 我现在意识到我不知道创建的物理文件的记录格式,需要一个逻辑文件来定义要在 RPG 代码中使用的键。我如何使用 SQL 而不是 DDS 来完成这项工作?

这正是我想问的,真的,现在我对这个主题了解得更多。

【问题讨论】:

  • 用 SQL 创建的表是一个物理文件。重新开始,以免让您的同事感到困惑。
  • 用 SQL 完成“什么”?如果您询问如何创建 SQL 索引,请运行 SQL CREATE INDEX 语句。或者您是在询问记录格式,如果是,那么它们呢?
  • @therealchx101 看看你必须如何重新开始下面的答案是一个创建语句。重新开始。

标签: sql db2 ibm-midrange


【解决方案1】:

使用 DDS 创建的 PF 和使用 SQL DDL 创建的表之间确实没有区别。

这两种方法都会产生一个带有 PF 属性的 *FILE 对象。

任一方法生成的对象均可用于 SQL 或 RPG 记录级访问 (RLA)。

您可以在 DDS 创建的 PF 或 SQL DDL 创建的表上创建 DDS LF 或 SQL 视图/索引。

IBM 提供了为 DDS 创建的对象生成 SQL DDL 的工具,但反之则不然。如果您丢失了 DDS 源,您也许可以找到一个旨在生成 DDS 的 3rd 方工具。

现在的最佳实践是使用 SQL DDL;使用 DDS 时,数据库的许多最新增强功能均不可用。

如果你认为你需要使用 DDS 来兼容例如 RPG,那你就错了。您需要做的就是利用 IBM i 特定的关键字。

代替

create table my_long_table_name (
  my_long_column_name  char(10)
);

使用

create table my_long_table_name      
         for system name mytable (   
  my_long_column_name                
     for mycol char(10)              
) rcdfmt mytabler;                    

【讨论】:

  • 感谢您的提示,我会尝试一下
  • 早上好,查尔斯。我尝试了“for”关键字,但出现语法错误...“关键字 FOR 不是预期的”
  • 最后的rcdfmt应该和表的名字不一样?
  • 显示您的来源。查尔斯给出的例子没有错误。没有来源,我们无法为您提供帮助。
  • RCDFMT 名称可以是您想要的任何名称....历史上,DDS 文件的记录格式名称与 PF 名称不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
相关资源
最近更新 更多