Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL

 

SQL 预处理器

SQL 预处理器是一个名为 sqlpp 的可执行文件。

预处理器命令行如下:

sqlpp [ options ] sql-filename [ output-filename ]

预处理器将 C 或 C++ 源文件中的嵌入式 SQL 语句转换为 C 代码,并将结果置于一个输出文件中。然后,将使用 C 或 C++ 编译器对输出文件进行处理。含有嵌入式 SQL 的源程序的扩展名通常为 .sqc。缺省的输出文件名为 sql-filename,扩展名为 .c。如果 sql-filename 具有 .c 扩展名,则缺省情况下输出文件的扩展名将更改为 .cc

注意

如果重建应用程序以使用新的主版本数据库接口库,则必须使用相同版本的 SQL 预处理器对嵌入式 SQL 文件进行预处理。

下表描述了各种预处理选项。

选项 说明
-d 生成减小数据空间大小的代码。数据结构在使用之前执行时会得到重用和初始化。这会增大代码的大小。
-e level

将任何未包含在指定标准中的静态嵌入式 SQL 标记为错误。level 值表示要使用的标准。例如,sqlpp -e c03 ... 标记任何未包含在核心 SQL/2008 标准中的语法。所支持的 level 值为:

  • c08   标记不是核心 SQL/2008 语法的语法

  • p08   标记非完整 SQL/2008 语法的语法

  • c03   标记不是核心 SQL/2003 语法的语法

  • p03   标记非完整 SQL/2003 语法的语法

  • c99   标记不是核心 SQL/1999 语法的语法

  • p99   标记非完整 SQL/1999 语法的语法

  • e92   标记非入门级 SQL/1992 语法的语法

  • i92   标记非中级 SQL/1992 语法的语法

  • f92   标记非完整 SQL/1992 语法的语法

  • t   标记非标准主机变量类型

  • u   标记 UltraLite 不支持的语法

为了与以前的 SQL Anywhere 版本兼容,也可指定 e、i 和 f(分别对应 e92、i92 和 f92)。

-h width 将 sqlpp 输出的最大行长度限制为 width。续行符是反斜杠 (\),而 width 的最小值是 10。
-k 通知预处理器要编译的程序包括 SQLCODE 的用户声明。定义必须是长整型,但不必在声明部分内。
-m mode

如果未在嵌入式 SQL 应用程序中显式地指定游标的可更新性模式,则指定游标的可更新性模式。mode 可以是以下其中一项:

  • HISTORICAL   在以前的版本中,嵌入式 SQL 游标在缺省情况下为 FOR UPDATE 或 READ ONLY(取决于查询和 ansi_update_constraints 选项值)。显式游标可更新性在 DECLARE CURSOR 中指定。使用该选项可保留此行为。

  • READONLY   嵌入式 SQL 游标缺省设置为 READ ONLY。显式游标可更新性在 PREPARE 上指定。这是缺省行为。READ ONLY 游标可提高性能。

-n 在 C 文件中生成行号信息。该信息包括生成的 C 代码中适当位置处的 #line 指令。如果您使用的编译器支持 #line 指令,使用此选项可使编译器按照 SQC 文件(其中带有嵌入式 SQL)的行号报错,而不是用 SQL 预处理器生成的 C 文件的行号报错。此外,#line 指令由源代码级调试程序间接使用,以便您可以在查看 SQC 源文件时进行调试。
-o operating-system

指定目标操作系统。支持的操作系统有:

  • WINDOWS   Microsoft Windows,包括 Windows Mobile。

  • UNIX   当创建 32 位 Unix 应用程序时可使用此选项。

  • UNIX64   当创建 64 位 Unix 应用程序时可使用此选项。

-q 安静模式—不显示消息。

-r-

生成非重入代码。
-s len 设置预处理器放入 C 文件的最大大小的字符串。对于长度大于此值的字符串,将使用一组字符('a''b''c' 等)对其进行初始化。大多数 C 编译器都对可以处理的字符串大小有限制。此选项用于设置其上限。缺省值是 500。
-u 为 UltraLite 生成代码。
-w level

将任何未包含在指定标准中的静态嵌入式 SQL 标记为警告。level 值表示要使用的标准。例如,sqlpp -w c08 ... 标记任何未包含在核心 SQL/2008 语法中的 SQL 语法。所支持的 level 值为:

  • c08   标记不是核心 SQL/2008 语法的语法

  • p08   标记非完整 SQL/2008 语法的语法

  • c03   标记不是核心 SQL/2003 语法的语法

  • p03   标记非完整 SQL/2003 语法的语法

  • c99   标记不是核心 SQL/1999 语法的语法

  • p99   标记非完整 SQL/1999 语法的语法

  • e92   标记非入门级 SQL/1992 语法的语法

  • i92   标记非中级 SQL/1992 语法的语法

  • f92   标记非完整 SQL/1992 语法的语法

  • t   标记非标准主机变量类型

  • u   标记 UltraLite 不支持的语法

为了与以前的 SQL Anywhere 版本兼容,也可指定 e、i 和 f(分别对应 e92、i92 和 f92)。

-x 将多字节字符串更改为转义序列,以便它们可以通过编译器。
-z cs

指定归类序列。要查看建议使用的归类序列的列表,请在命令提示符处运行 dbinit -l

归类序列用于帮助预处理器理解在程序源代码中使用的字符,例如,识别出适合在标识符中使用的字母字符。如果未指定 -z,则预处理器将尝试根据操作系统和 SALANG 与 SACHARSETE 环境变量确定要使用的合理归类。

sql-filename 要处理的包含嵌入式 SQL 的 C 或 C++ 程序。
output-filename 由 SQL 预处理器创建的 C 语言源文件。
 另请参见