Fortran 发出SQL语句的应用程序
只要在可执行语句的位置,您就可以在 Fortran 程序中编写SQL语句。 如果 SQL 语句位于 IF 语句中,预编译器会生成任何必要的 THEN 和 END IF 语句。
Fortran 源语句必须是固定长度的80字节记录。 Db2 预编译器不支持自由格式的源代码输入。
Fortran 程序中的每个SQL语句必须以EXEC SQL开头。 EXEC和SQL关键字必须出现在同一行,但语句的其余部分可以出现在后续行中。
您可以在 Fortran 程序中按如下方式编写UPDATE语句:
EXEC SQL
C UPDATE DSN8C10.DEPT
C SET MGRNO = :MGRNUM
C WHERE DEPTNO = :INTDEPT 在同一行中,不能将SQL语句与另一个SQL语句或 Fortran 语句放在一起。
Fortran 语句中不需要空格来分隔单词,但SQL语言需要空格。 嵌入式SQL的规则遵循SQL语法的规则,要求使用一个或多个空格作为分隔符。
- 注释
- 除了关键字EXEC和SQL之间,您可以在任何可以使用空格的嵌入式SQL语句中插入 Fortran 注释行。 您可以在任何嵌入式 SQL 语句中加入 SQL 注释。 更多信息,请参阅 SQL注释。
Db2 预编译器不支持在 Fortran 程序中将感叹号(!)作为注释识别字符。
- SQL语句的延续
- SQL语句的行延续规则与 Fortran 语句的规则相同,但必须在一行中指定EXEC SQL。 本主题中的SQL示例在第六列中带有Cs,表示它们是EXEC SQL的延续。
- 分隔符在 Fortran
- 在您的 Fortran 程序中,使用开头关键字
EXEC SQL和行尾或上一行的末尾。
- 声明表和视图
- 您的 Fortran 程序还应包含DECLARE TABLE语句,用于描述每个表并查看程序访问。
- Fortran 程序中的动态SQL
- 一般来说, Fortran 程序可以轻松处理动态SQL语句。 如果数据类型和返回的字段数量是固定的,则可以处理SELECT语句。 如果您想使用变量列表SELECT语句,则需要使用SQLDA,如定义SQL描述符区域(SQLDA)中所述。
您可以在语句PREPARE和EXECUTE IMMEDIATE中使用 Fortran 字符变量,即使它是固定长度的。
- 包括代码
- 要包含来自分区数据集成员的 SQL 语句或 Fortran 主机变量声明,请在源代码中要包含语句的位置使用以下 SQL 语句:
EXEC SQL INCLUDE member-name您不能嵌套SQL INCLUDE语句。 您不能使用 Fortran INCLUDE编译器指令来包含SQL语句或 Fortran 宿主变量声明。
- 页边距
- 在第7-72列(含)中编写SQL语句。 如果EXEC SQL在指定的左边界之前开始,则 Db2 预编译器无法识别SQL语句。
- 名称
您可以使用任何有效的 Fortran 名称作为主变量。 不要使用以“DSN”开头的外部输入名称或以“SQL”开头的主变量名称。 这些名字是 Db2 的专用名称。
除定义 Fortran DEBUG数据包外,请勿使用DEBUG一词。 不要使用函数、隐式、程序和子程序等词汇来定义变量。
- 序号
- Db2 预编译器生成的源语句不包含序列号。
- 声明标签
- 您可以在第1至第5列中指定SQL语句的编号。 然而,在程序准备期间,带有标签的 SQL 语句在生成执行 SQL 语句的代码之前会生成带有该标签的 Fortran CONTINUE 语句。 因此,带标签的SQL语句绝不应该成为DO循环中的最后一个语句。 此外,您不应该在第一个可执行的SQL语句之前标记SQL语句(例如INCLUDE和BEGIN DECLARE SECTION),因为可能会发生错误。
- WHENEVER 语句
- SQL语句中WHENEVER语句中的GOTO子句的目标必须是 Fortran 源代码中的标签,且必须引用同一子程序中的语句。 WHENEVER语句仅适用于同一子程序中的SQL语句。
- 特别 Fortran 注意事项
- 以下注意事项适用于用 Fortran 编写的程序:
- 您不能在源代码中使用@PROCESS语句。 请在PARM字段中指定编译器选项。
- 您不能使用SQL INCLUDE语句来包含以下语句:PROGRAM、SUBROUTINE、BLOCK、FUNCTION或IMPLICIT。
Db2 支持VS 的版本3第1版(或更高版本),但有以下限制: Fortran- 不支持并行选项。 包含 SQL 语句的应用程序不得使用 Fortran 并行性。
- 在嵌入式 SQL 中不能使用字节数据类型,因为字节不是可识别的宿主数据类型。
- 处理 SQL 错误代码
- Fortran 应用程序可以从 获取有关SQL错误的更多信息。 Db2 更多信息,请参阅 《在C和C++应用程序中处理SQL错误代码 》。