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

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite 数据库参考 » UltraLite 实用程序

 

UltraLite 实用程序的 SQL 预处理器 (sqlpp)

预处理包含嵌入式 SQL (ESQL) 的 C/C++ 程序,这样,可以在运行编译器之前生成该程序所需的代码。请注意,为保持完整性,下表描述了整个选项集,但是,UltraLite 的相关选项只有 -eu-wu

语法
sqlpp -u [ options ] esql-filename [ output-filename ]
选项 说明
-d 生成减小数据空间大小但增大代码大小的代码。数据结构在使用之前执行时会得到重用和初始化。
-e flag

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

level 的允许值有:

  • 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 .c 文件中,将 sqlpp 输出的拆分行的最大长度限制为 width。在拆分行的末尾添加反斜线字符,这样 C 编译器就可以将这些拆分行作为一个连续的行进行分析。缺省值为无最大行长度(缺省情况下不拆分输出行)。
-k 通知预处理器要编译的程序包括 SQLCODE 的用户声明。
-n

在生成的代码的相应位置上使用 #line 指令,可在 C 文件中生成行号信息。

此选项用于报告源代码错误,以及调试 esql-filename 文件(而不是 output-filename 文件)中这些行号处的源代码。

-o O/S spec 不适用于 UltraLite。
-q 将实用程序设置为在安静模式下运行。取消信息性标题、版本号和状态消息。但是,仍然会显示错误消息。
-r 不适用于 UltraLite。
-s string-length 设置预处理器要放入 C 文件的最大大小字符串。对于长度大于此值的字符串,将使用一组字符('a''b''c' 等)对其进行初始化。大多数 C 编译器都对可以处理的字符串大小有限制。此选项用于设置其上限。缺省值是 500。
-u UltraLite 必需的。生成 UltraLite 数据库特有的必需输出。
-w level

将不符合要求的 SQL 语法标记为警告。level 值表示要使用的标准。例如,sqlpp -w c03 ... 标记任何未包含在核心 SQL/2003 语法中的 SQL 语法。

level 的允许值有:

  • 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 collation-sequence 指定归类序列。
注释

此预处理器将 input-file 中的 SQL 语句转换为 C/C++,并将结果写入 output-filename。含有嵌入式 SQL 的源文件的常规扩展名是 sqc。缺省的 output-filename 为基本名 esql-filename 加上扩展名 c。但是,如果 esql-filename 已经有 .c 扩展名,则缺省的输出扩展名是 .cc

归类序列用于帮助预处理器理解程序的源代码所使用的字符。例如,标识适用于标识符的字母字符。在 UltraLite 中,归类包括一个代码页加上一个排序顺序。如果没有指定 -z,则预处理器会尝试根据操作系统确定要使用的合理归类。

要查看支持的归类(及其相应代码页)的列表,在命令提示符下运行 ulcreate -l

提示

SQL 预处理器 (sqlpp) 可在编译时在嵌入式 SQL 应用程序中标记静态 SQL 语句。此特性在开发 UltraLite 应用程序时对于验证 SQL 语句的 UltraLite 兼容性特别有用。使用 -e 和/或 -w 选项,可以测试 SQL Anywhere 与 UltraLite 应用程序的 SQL 兼容性。有关 SQL Flagger 的概述,请参见使用 SQL Flagger 测试 SQL 遵从性

另请参见
示例

以下命令在安静模式下为 UltraLite 应用程序预处理 srcfile.sqc 嵌入式 SQL 文件。

sqlpp -u -q MyEsqlFile.sqc